Size: a a a

2020 July 15

g

greelot in Haskell
Короче, ребята помогите, чем отличается функция с типом (a -> a) -> a от типа a -> a -> a

Я конечно понимаю, что именно в этом заключён смысл ленивых вычислений, но все же, что дают здесь скобки, что они меняют в функции?
источник

JM

Jonn Mostovoy in Haskell
Вы понимаете куррирование? @greelot
источник

ND

Nikita Domnickij in Haskell
функция принимающая функцию как параметр
источник

KV

Kirill Valyavin in Haskell
greelot
Короче, ребята помогите, чем отличается функция с типом (a -> a) -> a от типа a -> a -> a

Я конечно понимаю, что именно в этом заключён смысл ленивых вычислений, но все же, что дают здесь скобки, что они меняют в функции?
Это ваще разны вещи, сильно
Певое принимает функцию и выдаёт значение, а второе принимает значение и возвращает функцию (ну или два значения и возвращает третье)
источник

KV

Kirill Valyavin in Haskell
И ленивость не при делах
источник

g

greelot in Haskell
Я ошибся, каррирование
источник

g

greelot in Haskell
Не лень, да
источник

g

greelot in Haskell
Nikita Domnickij
функция принимающая функцию как параметр
Я бы не задал вопрос, если бы мне этого объяснения хватило
источник

JM

Jonn Mostovoy in Haskell
Хорошо, расставьте скобки во втором примере.
источник

JM

Jonn Mostovoy in Haskell
Это должно ответить на ваш вопрос!
источник

g

greelot in Haskell
Ну ладно
источник

g

greelot in Haskell
А выражение функции какое поставить для наглядности
источник

KV

Kirill Valyavin in Haskell
greelot
А выражение функции какое поставить для наглядности
Haskell> let one :: (String -> String) -> String; one f = f "123"
Haskell> let two :: String -> String -> String;   two x y = x <> y <> "123"
Haskell> one id
"123"
Haskell> two "a" "b"
"ab123"
источник

JM

Jonn Mostovoy in Haskell
можно кстати one (two "a") чтобы продемонстрировать каррирование
источник

KV

Kirill Valyavin in Haskell
Каррирование кстати тут относится только ко второму примеру, в первом просто higher order function
источник

g

greelot in Haskell
А зачем вообще где-то ставить скобки, если компилятор все сделает сам?
источник

JM

Jonn Mostovoy in Haskell
greelot
А зачем вообще где-то ставить скобки, если компилятор все сделает сам?
Чтобы в голове возникло понимание!
источник

g

greelot in Haskell
И все везде поставит, как ему надо
источник

g

greelot in Haskell
Я все равно нихрена не понял, зачем нужны скобки и каррирование. Что без скобок, что со скобками, разве все не одно и тоже?
источник

g

greelot in Haskell
В типе a -> (a -> a) тоже два аргумента принимается
источник