Size: a a a

2021 March 04

к

кана in Haskell
ну, с $ тоже не нужно было бы
источник

[

[BRM]White Rabbit in Haskell
ну, да, так красившее. Объявляю войну скобкам
источник

к

кана in Haskell
[BRM]White Rabbit
Ого, нифига, я что, не наложал, прописывая это? "Если компилится, значит, работает", конечно, но всё равно не особо верится.
это работает из-за очень полиморфных типов, когда есть только несколько возможных термов этого типа, тогда "если тайпчекается то все правильно" работает

например, тут у тебя f :: a -> b и x :: a, нужно вернуть b. Никак кроме как распаковать f и распаковать x и применить, b не получить

но тут можно ошибиться с input''/input' например, передать не тот input, будет тайпчекаться, а работать не будет
источник

к

кана in Haskell
и тут могут помочь уже линтипы, ты не сможешь забыть использовать переменную, если она должна использоваться ровно раз, и множество возможных термов снова уменьшается
источник

[

[BRM]White Rabbit in Haskell
Думаешь, если первый парсер упадёт в Nothing, оно сломается?
источник

к

кана in Haskell
нет, не сломается, там же Maybe.>>=
источник

к

кана in Haskell
функция написана правильно
источник

[

[BRM]White Rabbit in Haskell
найс
источник

JS

Jerzy Syrowiecki in Haskell
кана
и тут могут помочь уже линтипы, ты не сможешь забыть использовать переменную, если она должна использоваться ровно раз, и множество возможных термов снова уменьшается
а ещё может помочь нерекурсивность do-обозначений

(input, f) <- p1 input
(input, a) <- p2 input
pure (input, f a)
источник

[

[BRM]White Rabbit in Haskell
а чё, хаскель умеет в затемнение? Не знал
источник

JS

Jerzy Syrowiecki in Haskell
придётся только -Wname-shadowing обходить. ну или выключить его нафиг, если хочешь в таком стиле всегда писать
источник

JS

Jerzy Syrowiecki in Haskell
[BRM]White Rabbit
а чё, хаскель умеет в затемнение? Не знал
а кто не умеет?
источник

AP

Aleksei (astynax) Pi... in Haskell
(input, f) <- p1 input
...
рассахаривается в
p1 input >>= \(input, f) -> ...
или даже
(>>=) (p1 input) (\(input, f) -> ...)
источник

AP

Aleksei (astynax) Pi... in Haskell
понятно, что новый input перекроет старый, ведь это вложенная область видимости
источник

JS

Jerzy Syrowiecki in Haskell
очень хочется -Wname-shadowing отключить только для do<-, а для остального оставить. да, знаю, "пиши патчи в GHC"
источник

JS

Jerzy Syrowiecki in Haskell
[BRM]White Rabbit
а чё, хаскель умеет в затемнение? Не знал
если написать let a = f a, то вместо затенения получим рекурсию, но это не потому что затенение не работает, а потому что рекурсия работает
источник

JS

Jerzy Syrowiecki in Haskell
что-то не звучит "затенение". а "затемнение" вообще тут не подходить. лучше буду использовать "заслонение"
источник

AP

Aleksei (astynax) Pi... in Haskell
Мне кажется, что лучше везде иметь предупреждение, чем помнить о разнице всё время
источник

AP

Aleksei (astynax) Pi... in Haskell
(Тут могли бы вставить слово пропоненты let rec)
источник

IK

Ilya Kos in Haskell
Jerzy Syrowiecki
а ещё может помочь нерекурсивность do-обозначений

(input, f) <- p1 input
(input, a) <- p2 input
pure (input, f a)
Интересно как это с mdo работает
источник