Size: a a a

2020 May 14

AV

Alexander Vershilov in fprog_spb
только у throwLeft для колстека
источник

AV

Alexander Vershilov in fprog_spb
Работает!
источник

AV

Alexander Vershilov in fprog_spb
Типы не нужны!
источник

DS

Denis Shevchenko in fprog_spb
расходимся..
источник

n

neFormal in fprog_spb
Aleksei (astynax) Pirogov
Имеются в виду имена аргументов
Самой функции. Иногда имена аргументов можно додумать
источник

AV

Alexander Vershilov in fprog_spb
Aleksei (astynax) Pirogov
Имеются в виду имена аргументов
Ясно
источник

AP

Aleksei (astynax) Pi... in fprog_spb
neFormal
Самой функции. Иногда имена аргументов можно додумать
doStuff :: Int -> Bool -> Maybe Bool -> Int -> Maybe Int
придумайте имена
источник

YS

Yan Shkurinskiy in fprog_spb
Идея такая - в плохо написанном хаскельном коде типы не помогут
источник

AV

Alexander Vershilov in fprog_spb
Зависит от степени абстрактности
источник

YS

Yan Shkurinskiy in fprog_spb
Согласен
источник

AV

Alexander Vershilov in fprog_spb
На определенном уровне имена аргументов или документация нужна
источник

AV

Alexander Vershilov in fprog_spb
Можно конечно извращаться через newtype или аннотации
источник

YS

Yan Shkurinskiy in fprog_spb
В плохо написанном кложурном коде тоже мало что поможет
источник

YS

Yan Shkurinskiy in fprog_spb
В том числе и реплы
источник

AV

Alexander Vershilov in fprog_spb
doStuf :: Int --^ "Tries count"
 -> Bool --^ "Notify on failure"
 -> Maybe Bool --^ "some cruft"
 -> Int --^ "Another buggy argument"
 -> Maybe Int -- You may have not noticed, but I'm the only comment here
источник

AV

Alexander Vershilov in fprog_spb
Если что все "комментарии" выше это прямо типы, которые даже могут быть использованы компилятором, чтобы нарисовать документацию в swagger
источник

DS

Denis Shevchenko in fprog_spb
😂
источник

AV

Alexander Vershilov in fprog_spb
type family param --^ description where
 param --^ description = param
источник

n

neFormal in fprog_spb
Aleksei (astynax) Pirogov
doStuff :: Int -> Bool -> Maybe Bool -> Int -> Maybe Int
придумайте имена
Read(base, async, alsoPrint, limit) если контекст кода позволяет
источник

AV

Alexander Vershilov in fprog_spb
``
type family param --^ description where
 param mods sym a --^ description
   = param (Description description ': mods) sym a
param --^ description
 = TypeError ('Text "Cannot add description "
     ':<>: 'ShowType description
     ':<>: 'Text " for parameter "
     ':<>: 'ShowType param)
`
источник