- 2021-04-20, Tuesday:
So, I had this problem
I have
pairs :: [(a, IO [b])]
but I want
pairs' :: IO [(a, b)]
sequence
a gives me something like I don't know what: distributing the list monad, not the IO monad. Implement:sequence' :: [(a, IO [b])] -> IO [(a, b)]
- p h z @phaazon_:
fmap join . traverse (\(a, io) -> fmap (map (a,)) io)
- lucas卞dicioccio, PhD @lucasdicioccio:
Just to annoy you I'll use the list-comprehension syntax you dislike.
solution xs = sequence [fmap (a,) io | (a, io) <- xs]
- Benkio @benkio89:
fmap concat . traverse (\(a,iobs) -> fmap (a,) <$> iobs)
- Social Justice Cleric @noaheasterly
fmap concat . traverse (getCompose . traverse Compse)
- Social Justice Cleric @noaheasterly
fmap (concatMap getCompose) . getCompose . traverse Compose. Compose
- Basile Henry @basile_henry: Slightly less polymorphic:
sequence' = traverse @[] (sequence @((,) _) @IO)
- Basile Henry @basile_henry: I think it's just
traverse sequence
;) - Jérôme Avoustin @JeromeAvoustin: there surely is a shorter version, but I could come up with...
fmap join . sequence . (fmap . fmap) sequence . fmap sequence
- p h z @phaazon_:
- 2021-04-16, Friday:
You have a monad, or applicative, and you wish to execute the action of the latter but return the result of the former. The simplest representation for me is:
pass :: IO a -> b -> IO b
so:
return 5 >>= pass (putStrLn "Hi, there!")
would return
IO 5
GO!
- D Oisín Kidney @oisdk
flip (<$)
- ⓘ_jack @Iceland_jack
($>)
- D Oisín Kidney @oisdk
- 2021-04-12, Monday:
A function that takes the result of another function then uses that result and the original pair of arguments to compute the result:
f :: a -> a -> b g :: b -> a -> a -> c
so:
(\x y -> g (f x y) x y)
curry away the x and y arguments.
- 2021-04-07, Wednesday:
you have(Maybe a, Maybe b)
you wantMaybe (a, b)
If either (Maybe a) or (Maybe b) is
Nothing
then the answer isNothing
.If both (Maybe a) and (Maybe b) are (Just ...)
then the answer isJust (a, b)
WHAT SAY YOU?
- Jérôme Avoustin @JeromeAvoustin:
bisequence
- p h z @phaazon_ with base:
uncurry $ liftA2 (,)
- greg nwosu @buddhistfist:
(,) <$> ma <*> mb
- Jérôme Avoustin @JeromeAvoustin:
Incorporates strong typing over predicate logic programming, and, conversely, incorporates predicate logic programming into strongly typed functional languages. The style of predicate logic is from Prolog; the strongly typed functional language is Haskell.
Tuesday, April 6, 2021
April 2021 1HaskellADay 1Liners Problems and Solutions
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment