Значение "в имени функции Haskell?
Для чего используется цитата '
? Я прочитал о валютных функциях и прочитал два способа определения функции add - curried и uncurried. Версия в карри...
myadd' :: Int -> Int -> Int
myadd' x y = x + y
... но он работает одинаково хорошо без цитаты. Итак, какова точка '
?
Ответы
Ответ 1
Цитата ничего не значит для Haskell. Это просто часть имени этой функции.
Люди склонны использовать это для "внутренних" функций. Если у вас есть функция, которая суммирует список, используя аргумент аккумулятора, ваша сумма будет принимать два аргумента. Это уродливо, поэтому вы создаете функцию sum'
двух аргументов и функцию sum
одного аргумента, например sum list = sum' 0 list
.
Изменить, возможно, я должен просто показать код:
sum' s [] = s
sum' s (x:xs) = sum' (s + x) xs
sum xs = sum' 0 xs
Вы делаете это так, чтобы sum'
был хвост-рекурсивным, и так, чтобы "публичный API" выглядел приятным.
Ответ 2
Он часто произносится как "премьер", так что это будет "myadd prime". Он обычно используется для обозначения следующего шага в вычислении или альтернативе.
Итак, вы можете сказать
add = blah
add' = different blah
или
f x =
let x' = subcomputation x
in blah.
Это просто привычка, например, использование int я как индекса в цикле for для Java, C и т.д.
Изменить: этот ответ, надеюсь, станет более полезным теперь, когда я добавил все слова и форматирование кода.:) Я продолжаю забывать, что это не система WYSIWYG!
Ответ 3
В этом случае нет особой точки для символа '
; это просто часть идентификатора. Другими словами, myadd
и myadd'
- различные, не связанные функции.
Обычно, '
используется для обозначения некоторых отношений логической оценки. Таким образом, гипотетическая функция myadd
и myadd'
будет связана с тем, что myadd'
может быть выведено из myadd
. Это соглашение, основанное на формальной логике и доказательствах в академических кругах (где у Haskell есть свои корни). Я должен подчеркнуть, что это всего лишь соглашение, Haskell не применяет его.
Ответ 4
quote '- это еще один допустимый символ в именах Haskell. Он часто используется для определения вариантов функций, и в этом случае цитата произносится как "prime". В частности, библиотеки Haskell используют варианты кавычек, чтобы показать, что вариант является строгим. Например: foldl
является ленивым, foldl'
является строгим.
В этом случае, похоже, что цитата используется только для разделения вариантов с карьером и нерегулярностью.
Ответ 5
Как говорят другие, '
не имеет никакого значения для самого Haskell. Это всего лишь символ, например, буква или число.
'
используется для обозначения альтернативных вариантов функции (в случае foldl
и foldl'
) или вспомогательных функций. Иногда вы даже видите несколько '
для имени функции. Добавление '
в конец имени функции намного более кратким, чем запись someFunctionHelper
и someFunctionStrict
.
Источником этих обозначений является математика и физика, где, если у вас есть функция f(x)
, ее производная часто обозначается как f'(x)
.