Size: a a a

Elm Lang сообщество разработчиков

2019 September 07

AK

Antony Kapranov in Elm Lang сообщество разработчиков
Описание ошибок очень приятное в элме. Меня, как новичка в нём, очень-очень радуют

Фишка этого Fix, в лёгком написании рекурсивных функций. Пример:
toList : Maybe (List ()) -> List ()
toList m =
 case m of
   Just x  -> () :: x
   Nothing -> []

main = text <| Debug.toString <| maybeCata toList two
источник

AK

Antony Kapranov in Elm Lang сообщество разработчиков
Можно очень простые и тестируемые обходилки деревьев писать
источник

IR

Ilya Rezvov in Elm Lang сообщество разработчиков
слишком умный код получается без особого профита
источник

AK

Antony Kapranov in Elm Lang сообщество разработчиков
Я могу скинуть более осмысленный пример. Есть какие-нибудь онлайн блокноты для elm?
источник

(

( in Elm Lang сообщество разработчиков
Antony Kapranov
Я могу скинуть более осмысленный пример. Есть какие-нибудь онлайн блокноты для elm?
Ellie-App, возможно repl.it поддерживает эльм
источник

G

GG in Elm Lang сообщество разработчиков
Antony Kapranov
Я могу скинуть более осмысленный пример. Есть какие-нибудь онлайн блокноты для elm?
на оф сайте ельма есть try, еще есть ellie
источник

AK

Antony Kapranov in Elm Lang сообщество разработчиков
Мне ссылку не даёт сюда запостить :(
источник

G

GG in Elm Lang сообщество разработчиков
давай без https))
источник

AK

Antony Kapranov in Elm Lang сообщество разработчиков
и без него не даёт :(
источник

G

GG in Elm Lang сообщество разработчиков
в тильды заверни
источник

AK

Antony Kapranov in Elm Lang сообщество разработчиков
https://gist.github.com/kapranov-anton/1b913f855850813d7811800d6be4d969
источник

G

GG in Elm Lang сообщество разработчиков
нашли дыру в защите)
источник

AK

Antony Kapranov in Elm Lang сообщество разработчиков
:)

Цимес в том, что делается один раз описание
cata
, а потом разные варианты что хочется получить при обходе дерева.
источник

(

( in Elm Lang сообщество разработчиков
Как, вы ещё не слышали про зигохистоморфный препроформизм?
источник

(

( in Elm Lang сообщество разработчиков
Antony Kapranov
Я вроде вдуплил как на элме сделать

main = text <| Debug.toString <| maybeCata toInt two

type FixMaybe = FixMaybe (Maybe FixMaybe)
maybeCata : (Maybe a -> a) -> FixMaybe -> a
maybeCata alg (FixMaybe node) =
 alg (Maybe.map (maybeCata alg) node)

toInt : Maybe Int -> Int
toInt m =
 case m of
   Just x  -> x + 1
   Nothing -> 0
   
zero = FixMaybe Nothing
one  = FixMaybe (Just zero)
two  = FixMaybe (Just one)
Алсо, так посмотришь и мля, как же это плохо выглядит без хкт
источник

AK

Antony Kapranov in Elm Lang сообщество разработчиков
Согласен, на любителя. Но информация об ошибках уж больно приятна глазу. С hkt она бы, наверное, сильно страшнее была
источник

G

GG in Elm Lang сообщество разработчиков
Antony Kapranov
https://gist.github.com/kapranov-anton/1b913f855850813d7811800d6be4d969
что-то не пойму в чем профит. тот же рузультат можно получить и с fmap
источник

AK

Antony Kapranov in Elm Lang сообщество разработчиков
GG
что-то не пойму в чем профит. тот же рузультат можно получить и с fmap
Возможно, что я переусложняю. Скинь пример, пожалуйста
источник

G

GG in Elm Lang сообщество разработчиков
Antony Kapranov
Возможно, что я переусложняю. Скинь пример, пожалуйста
а нет. ошибся. fmap вернет список, а у тебя это работает и как свертка, и как map 🤔
источник

(

( in Elm Lang сообщество разработчиков
GG
а нет. ошибся. fmap вернет список, а у тебя это работает и как свертка, и как map 🤔
cata это фолд
источник