Значение "в имени функции 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).