.
В скобках переводы, которые я встречал, но которые мне нравятся меньше чем мои. Приветствуются комментарии и замечания.
guards -> стражи (охрана)
Так легче говорить про отдельного стража (в ед. числе).
curried function -> каррированная функция uncurried function -> анкаррированная функция
Как-то приставка не очень? Но некаррированная менее точно выражает смысл.
section -> сечение (секция)
По-моему, сечение лучше выражает смысл термина: был 2-арный оператор, частично применили (сделали сечение по одной арности) — стало 1-арный.
ad hoc polymorphism -> специальный полиморфизм
Было обсуждение ad hoc
, правда в другом контексте. Вроде как такой перевод (специальный полиморфизм) уже устоялся.
instance declaration -> объявление представителя (объявление экземпляра)
Экземпляр наводит на мысль об объекте в памяти (хотя это, возможно, ООП-наведённый образ ). Здесь же (в Хаскелле) речь идёт об объявлении типа представителем класса типа.
unit type -> пустой тип (единичный тип)
Тут сам не определился. Я ещё согласен с переводом , unit expression -> единичное выражение, хотя здесь unit имеет оттенок единственное (собственно unit от того, что выражение ( ) — единственное в этом типе). Но что его тип (unit type), переводится как единичный тип По смыслу он эквивалентен void в C-подобных языках
deniok wrote: > *curried function -> каррированная функция* > *uncurried function -> /ан/каррированная функция* > Как-то приставка не очень? Но /некаррированная/ менее точно выражает смысл.
декаррированная тоже не очень, но на мой вкус лучше.
> *unit type -> пустой тип (единичный тип) * > Тут сам не определился. Я ещё согласен с переводом , *unit expression -> > единичное выражение*, хотя здесь unit имеет оттенок единственное > (собственно unit от того, что выражение ( ) — единственное в этом типе). > Но что его тип (unit type), переводится как /единичный тип/ По смыслу он > эквивалентен void в C-подобных языках
Может, что-то вроде "точечный" или "нейтральный"?
Здравствуйте, raskin, Вы писали:
R>deniok wrote: >> *curried function -> каррированная функция* >> *uncurried function -> /ан/каррированная функция* >> Как-то приставка не очень? Но /некаррированная/ менее точно выражает смысл. R>декаррированная тоже не очень, но на мой вкус лучше.
каррирование — это отображение (X*Y*...*Z)->T на X->Y->...->Z->T
Декаррирование — наоборот, X->Y->...->Z->T на (X*Y*...*Z)->T — т.е. создание функции от декартова произведения типов аргументов. Может быть, назвать его "декартированием"?
>> *unit type -> пустой тип (единичный тип) * R>Может, что-то вроде "точечный" или "нейтральный"?
Здравствуйте, Кодт, Вы писали:
>>> *unit type -> пустой тип (единичный тип) * R>>Может, что-то вроде "точечный" или "нейтральный"?
К>Точечный — перекликается с теорией категорий.
R>>декаррированная тоже не очень, но на мой вкус лучше.
К>каррирование — это отображение (X*Y*...*Z)->T на X->Y->...->Z->T К>Декаррирование — наоборот, X->Y->...->Z->T на (X*Y*...*Z)->T — т.е. создание функции от декартова произведения типов аргументов. Может быть, назвать его "декартированием"?
Тогда придется каждый раз, когда применяется этот термин, давать ссылку на объяснение, что ж это такое-то
Здравствуйте, deniok, Вы писали:
D>guards -> стражи (охрана)
Мне больше нравиться "охрана", а ещё больше "предохранитель" (как в переводе "Дисциплины программирования").
D>uncurried function -> анкаррированная функция D>Как-то приставка не очень? Но некаррированная менее точно выражает смысл.
А какой смысл подразумевается? Очень часто uncurried function озачает именно "функция в первозданной форме".
D>section -> сечение (секция) D>По-моему, сечение лучше выражает смысл термина: был 2-арный оператор, частично применили (сделали сечение по одной арности) — стало 1-арный.
Сечение — однозначно лучше. Даже не понимаю, откуда взялись "секции".
D>ad hoc polymorphism -> специальный полиморфизм D>Было обсуждение ad hoc
, правда в другом контексте. Вроде как такой перевод (специальный полиморфизм) уже устоялся.
Вроде, устоялся. Хотя латинские выражения часто используютя как есть.
D>instance declaration -> объявление представителя (объявление экземпляра) D>Экземпляр наводит на мысль об объекте в памяти (хотя это, возможно, ООП-наведённый образ ). Здесь же (в Хаскелле) речь идёт об объявлении типа представителем класса типа.
Представитель класса — элемент, который представляет весь класс. Так что здесь речь вовсе не об этом. Скорее, объявляется принадлежность классу (или членство — кому больше нравится). "Объявление экземпляра" звучит несколько коряво, но у нас же принято делать кальки, а эта самая подходящая.
D>unit type -> пустой тип (единичный тип) D>Тут сам не определился. Я ещё согласен с переводом , unit expression -> единичное выражение, хотя здесь unit имеет оттенок единственное (собственно unit от того, что выражение ( ) — единственное в этом типе). Но что его тип (unit type), переводится как единичный тип По смыслу он эквивалентен void в C-подобных языках
Void означает отсутсвие типа. А unit всё же полноценный тип. Может, "единичный" и не совсем хорошо, но политкорректное "одноэлементный" .
Здравствуйте, Трурль, Вы писали:
Т>Здравствуйте, deniok, Вы писали:
D>>guards -> стражи (охрана) Т>Мне больше нравиться "охрана", а ещё больше "предохранитель" (как в переводе "Дисциплины программирования").
Предохранитель — отлично! Ни разу не видел!
D>>section -> сечение (секция) D>>По-моему, сечение лучше выражает смысл термина: был 2-арный оператор, частично применили (сделали сечение по одной арности) — стало 1-арный. Т>Сечение — однозначно лучше. Даже не понимаю, откуда взялись "секции".
+1
D>>instance declaration -> объявление представителя (объявление экземпляра) D>>Экземпляр наводит на мысль об объекте в памяти (хотя это, возможно, ООП-наведённый образ ). Здесь же (в Хаскелле) речь идёт об объявлении типа представителем класса типа. Т>Представитель класса — элемент, который представляет весь класс. Так что здесь речь вовсе не об этом. Скорее, объявляется принадлежность классу (или членство — кому больше нравится). "Объявление экземпляра" звучит несколько коряво, но у нас же принято делать кальки, а эта самая подходящая.
Может, объявление принадлежности? (хотя это далеко уводит от буквальной кальки)
D>>unit type -> пустой тип (единичный тип) D>>Тут сам не определился. Я ещё согласен с переводом , unit expression -> единичное выражение, хотя здесь unit имеет оттенок единственное (собственно unit от того, что выражение ( ) — единственное в этом типе). Но что его тип (unit type), переводится как единичный тип По смыслу он эквивалентен void в C-подобных языках Т>Void означает отсутсвие типа. А unit всё же полноценный тип. Может, "единичный" и не совсем хорошо, но политкорректное "одноэлементный" .
The unit expression () has type () (see Section 4.1.2). It is the only member of that type apart from _|_, and can be thought of as the "nullary tuple" (see Section 6.1.5).
Здравствуйте, Трурль, Вы писали:
D>>guards -> стражи (охрана) Т>Мне больше нравиться "охрана", а ещё больше "предохранитель" (как в переводе "Дисциплины программирования").
Причём это именно пред-охранитель, предусловие данной ветки!
D>>uncurried function -> анкаррированная функция D>>Как-то приставка не очень? Но некаррированная менее точно выражает смысл. Т>А какой смысл подразумевается? Очень часто uncurried function озачает именно "функция в первозданной форме".
А если изначально функция имела тип a->(b->c), т.е. возвращала функцию? Как-то странно говорить о первозданности в этом случае.
D>>instance declaration -> объявление представителя (объявление экземпляра) D>>Экземпляр наводит на мысль об объекте в памяти (хотя это, возможно, ООП-наведённый образ ). Здесь же (в Хаскелле) речь идёт об объявлении типа представителем класса типа. Т>Представитель класса — элемент, который представляет весь класс. Так что здесь речь вовсе не об этом. Скорее, объявляется принадлежность классу (или членство — кому больше нравится). "Объявление экземпляра" звучит несколько коряво, но у нас же принято делать кальки, а эта самая подходящая.
Экземпляр класса — как-то не очень. Может быть, всё-таки элемент? И всё равно коряво.
Объявляется не просто принадлежность к классу, а воплощение этой принадлежности (в т.ч. реализация перегруженных функций).
Кстати, перегрузка как приём ad-hoc-полиморфизма -> "полиморфизм времени компиляции".
D>>unit type -> пустой тип (единичный тип) D>>Тут сам не определился. Я ещё согласен с переводом , unit expression -> единичное выражение, хотя здесь unit имеет оттенок единственное (собственно unit от того, что выражение ( ) — единственное в этом типе). Но что его тип (unit type), переводится как единичный тип По смыслу он эквивалентен void в C-подобных языках Т>Void означает отсутсвие типа. А unit всё же полноценный тип. Может, "единичный" и не совсем хорошо, но политкорректное "одноэлементный" .
Вообще, одноэлементных типов можно нарожать сколько угодно:
data One = One
data Singular = BlackHole
Терминальный или пустой — более подходят по смыслу. Тем более, что синтаксически () это пустой кортеж.
Здравствуйте, Кодт, Вы писали:
К>А если изначально функция имела тип a->(b->c), т.е. возвращала функцию? Как-то странно говорить о первозданности в этом случае.
Обычно когда говорят "каррированная функция", подразумевают, что у нас есть функция нескольких аргументов, а мы её "каррируем".
А если она изначально типа a->(b->c), то и каррировать нечего.
К>Терминальный или пустой — более подходят по смыслу.
Пустой, мне кажется, означает "не содержащий элементов", то есть как раз инициальный.
Здравствуйте, Кодт, Вы писали:
К>Кстати, перегрузка как приём ad-hoc-полиморфизма -> "полиморфизм времени компиляции".
Параметрический полиморфизм — тоже полиморфизм времени компиляции, однако.
Здравствуйте, Трурль, Вы писали:
К>>А если изначально функция имела тип a->(b->c), т.е. возвращала функцию? Как-то странно говорить о первозданности в этом случае. Т>Обычно когда говорят "каррированная функция", подразумевают, что у нас есть функция нескольких аргументов, а мы её "каррируем". Т>А если она изначально типа a->(b->c), то и каррировать нечего.
Однако операция uncurry над ней определена.
curry и uncurry — обратные друг к другу.
uc :: ((a,b)->c) -> ((a,b)->c)
uc = uncurry.curry
uc = id
cu :: (a->b->c) -> (a->b->c)
cu = curry.uncurry
cu = id
К>>Терминальный или пустой — более подходят по смыслу. Т>Пустой, мне кажется, означает "не содержащий элементов", то есть как раз инициальный.
А ещё означает "не несущий смысла". О! Порожний тип.
Здравствуйте, Кодт, Вы писали:
D>>>instance declaration -> объявление представителя (объявление экземпляра) D>>>Экземпляр наводит на мысль об объекте в памяти (хотя это, возможно, ООП-наведённый образ ). Здесь же (в Хаскелле) речь идёт об объявлении типа представителем класса типа. Т>>Представитель класса — элемент, который представляет весь класс. Так что здесь речь вовсе не об этом. Скорее, объявляется принадлежность классу (или членство — кому больше нравится). "Объявление экземпляра" звучит несколько коряво, но у нас же принято делать кальки, а эта самая подходящая.
К>Экземпляр класса — как-то не очень. Может быть, всё-таки элемент? И всё равно коряво. К>Объявляется не просто принадлежность к классу, а воплощение этой принадлежности (в т.ч. реализация перегруженных функций).
О, instance declaration -> объявление воплощения!
А instance -> воплощение .
Правда звучит слишком возвышенно...
Тип Char, являясь воплощением класса Ord, бла-бла-бла.
Тип Char, являясь экземпляром класса Ord, бла-бла-бла.
Тип Char, являясь представителем класса Ord, бла-бла-бла.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Трурль, Вы писали:
К>>>Терминальный или пустой — более подходят по смыслу. Т>>Пустой, мне кажется, означает "не содержащий элементов", то есть как раз инициальный. К>А ещё означает "не несущий смысла". О! Порожний тип.
Тут и думать нечего NIL он и в Африке — Нил Пустота, нил-тип, нил-значение, в иерархии типов лиспа — универсальный потомок всех типов, отсутствие любого присутствия.