Size: a a a

2021 February 18

JS

Jerzy Syrowiecki in Haskell Start
The Lord of Hypercomplex Numbers
Кто справится короче?
с sequence уже начали
источник

JS

Jerzy Syrowiecki in Haskell Start
а как без аппликатива? в рабоче-крестьянском стиле, только списковыми операциями
источник

D

Dreamerinnoise in Haskell Start
ну в учебных целях нужно решить и так и так
источник

A

Aragaer in Haskell Start
concatMap (\x -> map (x:) $ myFunc ls) l
источник

T

The Lord of Hypercom... in Haskell Start
Jerzy Syrowiecki
с sequence уже начали
Ну это встроенная, кто знает, что у неё в кишках
источник

[

[BRM]White Rabbit in Haskell Start
Нифига тут умные обсуждения пошли
источник

JS

Jerzy Syrowiecki in Haskell Start
The Lord of Hypercomplex Numbers
Ну это встроенная, кто знает, что у неё в кишках
исходники открыты, кто хочет, тот знает
источник

к

кана in Haskell Start
The Lord of Hypercomplex Numbers
Ну это встроенная, кто знает, что у неё в кишках
все знают, она не встроенная, в base-либе в инстансе Traversable []
источник

DG

Denis Gabidullin in Haskell Start
кана
все знают, она не встроенная, в base-либе в инстансе Traversable []
Я совсем не специалист, но не уверен, что для [] будет определена именно sequence
источник

DG

Denis Gabidullin in Haskell Start
кана
все знают, она не встроенная, в base-либе в инстансе Traversable []
Суть, естественно, ты верно написал)
источник

к

кана in Haskell Start
ну будет просто определен traverse, и из него выводится sequence, но можно и наоборот
источник

DG

Denis Gabidullin in Haskell Start
Но вдруг кто-то будет в инстансе искать sequence, а найдёт только traverse)
источник

АК

Анатолий Кот... in Haskell Start
Добрый день, есть ли разница между
fallRight :: a -> e -> (a -> Maybe b) -> Either e b 
fallRight a e f | Nothing <- f a = Left e
fallRight a e f | Just b  <- f a = Right b

и таким же кодом записанным через
fallRight a e f = case f a of …


тв будет ли f a в первом случае вычисленно единожды или по разу на каждый кейс?
источник

YS

Yan Shkurinskiy in Haskell Start
Оно будет вычислено один раз в обоих случаях
источник

АК

Анатолий Кот... in Haskell Start
окей, спасибо
источник

к

кана in Haskell Start
Анатолий Кот
Добрый день, есть ли разница между
fallRight :: a -> e -> (a -> Maybe b) -> Either e b 
fallRight a e f | Nothing <- f a = Left e
fallRight a e f | Just b  <- f a = Right b

и таким же кодом записанным через
fallRight a e f = case f a of …


тв будет ли f a в первом случае вычисленно единожды или по разу на каждый кейс?
f, g, h, t :: Maybe Int -> Int
f (Just a) = a
f Nothing = 0
-- f :: Maybe Int -> Int
-- f = \x ->
--       case x of {
--         Nothing -> 0;
--         Just a -> a
--       }

g x | Just a <- x = a
g x | Nothing <- x = 0
-- g :: Maybe Int -> Int
-- g = \x ->
--       case x of {
--         Nothing ->
--           case Nothing @ Int of {
--             Nothing -> 0;
--             Just _ ->
--               Control.Exception.Base.patError
--                 @ 'LiftedRep
--                 @ Int
--                 "app/Main.hs:(4,1)-(5,22)|function g"#
--           };
--         Just a -> a
--       }

h x
 | Just a <- x = a
 | Nothing <- x = 0
-- h :: Maybe Int -> Int
-- h = \x ->
--       case x of {
--         Nothing ->
--           case (Nothing) @ Int of {
--             Nothing -> 0;
--             Just _ ->
--               Control.Exception.Base.patError
--                 @ 'LiftedRep
--                 @ Int
--                 "app/Main.hs:(6,1)-(8,20)|function h"#
--           };
--         Just a -> a
--       }

t x = case x of
 Just a -> a
 Nothing -> 0
-- t :: Maybe Int -> Int
-- t = \x ->
--       case x of {
--         Nothing -> 0;
--         Just a -> a
--       }
источник

к

кана in Haskell Start
это core на выходе
источник

к

кана in Haskell Start
case Nothing of { Nothing -> 0; _ }

должен будет схлопнуться оптимизаций до

0

так что наверное по итогу будет все одинаково
источник

к

кана in Haskell Start
так и есть
источник

к

кана in Haskell Start
я еще NOINLINE убрал, и все эти функции вообще до одной схлопнулись

при таком исходнике

f :: Maybe Int -> Int
f (Just a) = a
f Nothing = 0

g :: Maybe Int -> Int
g x | Just a <- x = a
g x | Nothing <- x = 0

h :: Maybe Int -> Int
h x
 | Just a <- x = a
 | Nothing <- x = 0

t :: Maybe Int -> Int
t x = case x of
 Just a -> a
 Nothing -> 0
источник