Size: a a a

2021 March 17

JS

Jerzy Syrowiecki in Haskell Start
функции — тоже значения, кстати (конечно, это первое, что человек узнаёт о Хаскеле, но на всякий случай)
источник

AY

Andrei Yangabishev in Haskell Start
Это оно потом станет значением, но чтобы стать им оно зависит от toStdout
источник

D

Dreamerinnoise in Haskell Start
Jerzy Syrowiecki
функции — тоже значения, кстати (конечно, это первое, что человек узнаёт о Хаскеле, но на всякий случай)
не всегда, и не сразу это становится очевидно
источник

JS

Jerzy Syrowiecki in Haskell Start
Andrei Yangabishev
Это оно потом станет значением, но чтобы стать им оно зависит от toStdout
фактически да, формально нет

выше предлагали переписать через if-then-else. в таком виде оно будет зависеть?
источник

D

Dreamerinnoise in Haskell Start
вроде и ясно, а потом как на новые ворота смотришь
источник

JS

Jerzy Syrowiecki in Haskell Start
Dreamerinnoise
не всегда, и не сразу это становится очевидно
контрпример?
источник

JS

Jerzy Syrowiecki in Haskell Start
вы к тому, что функции не данные, а коданные?
источник

D

Dreamerinnoise in Haskell Start
Jerzy Syrowiecki
контрпример?
да просто думал изначально что функции это процедуры, и синтаксис типов отвлекал
первое что я узнал это то, что  скобки не нужны
источник

JS

Jerzy Syrowiecki in Haskell Start
ну, я про то, что первое, что известно о Хаскеле, — это что он "функциональный". а что это значит? что функции — это обычные значения.
источник

JS

Jerzy Syrowiecki in Haskell Start
Dreamerinnoise
да просто думал изначально что функции это процедуры, и синтаксис типов отвлекал
первое что я узнал это то, что  скобки не нужны
у нас стрелочка в типе нужна, чтобы была функция. то есть тоже есть визуальное отличие. где у них скобки — признак функции, у нас — стрелка
источник

D

Dreamerinnoise in Haskell Start
Jerzy Syrowiecki
у нас стрелочка в типе нужна, чтобы была функция. то есть тоже есть визуальное отличие. где у них скобки — признак функции, у нас — стрелка
автокарринг ещё вначале смущал
источник

YS

Yan Shkurinskiy in Haskell Start
автокарринг кмк это если бы хаскель насильно  из (a,b) -> c делал a -> b -> c
источник

к

кана in Haskell Start
да, в хаскеле нет автокарринга, все вручную просто пишут сразу каррированные функции, потому что синтаксис для этого удобный
источник

D

Dreamerinnoise in Haskell Start
In Haskell, all functions are considered curried: That is, all functions in Haskell take just one argument.

я это имел в виду
источник

D

Dreamerinnoise in Haskell Start
>f :: a -> (b -> c) ==   f :: a -> b -> c
источник

D

Dreamerinnoise in Haskell Start
кому-то может показаться очевидно, конечно
источник

D

Dreamerinnoise in Haskell Start
меня сбивало с толку
источник

JS

Jerzy Syrowiecki in Haskell Start
да, дефолт-карринг
источник

JS

Jerzy Syrowiecki in Haskell Start
или по-русски — шейнфинкелинг по умолчанию
источник

A

Aleksandr Khristenko in Haskell Start
Andrei Yangabishev
А я долго понять эту конструкцию не мог

case targets of
   Right (target, toStdout) -> do
     let
       options
         | toStdout  = ParseOptions NoVerbose Force toStdout file
         | otherwise = ParseOptions verbose force toStdout file

вот это options вроде как значение и вроде функция. Еще где-то встречал в where или let функцию с паттернами, т.е. одно и тоже имя функции упоминается несколько раз, но написано было так что долго вкуривал.

И еще. Есть в Хаскеле система именования констант? А то смотрю в код, вижу MyApp.appConfig, а то что это константа изначально не видно

appConfig :: FilePath
appConfig = "config.yaml"


и приходится ходить за каждым определением.
А это разве не multi way if расширение? Чтобы вместо if писать через гварды
источник