Size: a a a

2020 May 25

R

Roman in Haskell
не в data, а в вещах типа ленивый байндингов в where. В том, что можно любой терм в let засунуть и не бояться, что он из-за этого рано вычисляться начнет. И ленивые по дефолту списки — это хорошо
источник

A

Andrey in Haskell
ленивую мапу не использовал, но, возможно, увижу и ей удобное применение
источник

R

Roman in Haskell
A64m AL256m qn I0
зачем тогда на хачкеле писать?
а еще я пописал на строгой System F omega и насладился тем фактом, что надо делать eta-expansion вручную, иначе можно запросто влететь в бесконечный цикл. Например вот этот терм:

/\(r :: *) -> \(f : r -> r) ->
   fix {r} {nat -> r} \(rec : r -> nat -> r) (z : r) (n : nat) ->
       unwrap n {r} z (\(n' : nat) -> rec (f z) n')


вычисляется нормально. А вот этот зацикливается, насколько я помню:

/\(r :: *) -> \(f : r -> r) ->
   fix {r} {nat -> r} \(rec : r -> nat -> r) (z : r) (n : nat) ->
       unwrap n {r} z (rec (f z))


короче я люблю лень, просто нахрена она в data по дефолту нужна?
источник

ЗП

Зигохистоморфный Пре... in Haskell
Roman
а еще я пописал на строгой System F omega и насладился тем фактом, что надо делать eta-expansion вручную, иначе можно запросто влететь в бесконечный цикл. Например вот этот терм:

/\(r :: *) -> \(f : r -> r) ->
   fix {r} {nat -> r} \(rec : r -> nat -> r) (z : r) (n : nat) ->
       unwrap n {r} z (\(n' : nat) -> rec (f z) n')


вычисляется нормально. А вот этот зацикливается, насколько я помню:

/\(r :: *) -> \(f : r -> r) ->
   fix {r} {nat -> r} \(rec : r -> nat -> r) (z : r) (n : nat) ->
       unwrap n {r} z (rec (f z))


короче я люблю лень, просто нахрена она в data по дефолту нужна?
у пурсы так, eta-expansion надо делать почти всегда
источник

R

Roman in Haskell
Зигохистоморфный Препроморфизм
у пурсы так, eta-expansion надо делать почти всегда
вот че б компилятору этим не заняться? Все равно пурса тормозная
источник
2020 May 26

YG

Yury Golikov in Haskell
Расскажите, плиза, что по неймингу в хаскеле? Просто не очень хочется делать переменные длинне 4 символов, но с другой стороны я перестаю понимать контекст своего кода который написал еще недавно.
Есть ли какие то правила?
Я пока думаю делать в сигнатуре и юзать синонимы для этого, это норма?

type MoneyLeft = Integer
data Result = Result (Maybe Item) (Maybe Item) MoneyLeft
источник

к

кана in Haskell
норма, если еще инстансы хочешь определять, то есть newtype можно вместо алиаса
источник

к

кана in Haskell
о, вот оно что, хочу чтобы можно было в тайпклассах еще паттерн-синонимы делать
источник

к

кана in Haskell
тогда по идее OverloadedLists будет не нужен, но точнее он будет работать уже не с fromList, а с перегруженными паттернами
источник

YS

Yan Shkurinskiy in Haskell
У меня всё плохо с неймингом х(
источник

YS

Yan Shkurinskiy in Haskell
Префиксы как в джаве интерпрайзном коде
источник

YS

Yan Shkurinskiy in Haskell
Зато вроде ясно
источник

YS

Yan Shkurinskiy in Haskell
Если всё читать)
источник

YG

Yury Golikov in Haskell
Yan Shkurinskiy
Префиксы как в джаве интерпрайзном коде
MonadService?)
источник

YS

Yan Shkurinskiy in Haskell
Yury Golikov
MonadService?)
не понял .-.
источник

YG

Yury Golikov in Haskell
Yan Shkurinskiy
не понял .-.
Видимо я не допонял, а какие префиксы?
источник

YS

Yan Shkurinskiy in Haskell
Ну, в имени идентификаторов всяких, конструкторов
источник

YS

Yan Shkurinskiy in Haskell
Об этом же вопрос?
источник

KZ

Kirill Zaborsky in Haskell
Тут коллега какое-то время назад написал про нейминг отчасти в честь другого коллеги из Германии - https://chrisdone.com/posts/german-naming-convention/
источник

YS

Yan Shkurinskiy in Haskell
Точно
источник