- January 31st, 2017:

You have d = "3.461497957769017000D+07"

define parseDouble :: String -> Double

(n.b.: (read d) :: Double throws an error) - bazzargh @bazzargh uncurry (*) (bimap read ((10^).read.(dropWhile(`elem`"0+D"))) (break (=='D') d))::Double
- January 31st, 2017: Given

e :: FilePath -> [String] -> [Epoch]

readEpochs :: FilePath -> IO [Epoch]

readEpochs f = e f . lines <$> readFile f

point-free-itize readEpochs - Astynax Pirogov @alex_pir uncurry fmap . (((. lines) . e) &&& readFile
- January 30th, 2017: Given

parseNum :: String -> Maybe (Float, String)

define: dropNum'' :: String -> Maybe String

points-free in terms of parseNum - matt @themattchan dropNum" = fmap snd . parseNum
- January 30th, 2017: For

parseHeader :: String -> Maybe String

parseHeader str = match "Start " str <|> match "Finish " str

eliminate redundancies - mconcat . ([match] <*> ["Start ", "Finish "] <*>) . pure
- Nickolay Kudasov @crazy_fizruk If you're allowed to use Monoid instead of Alternative, how about this version?

foldMap match ["Start", "Finish"] - Andreas Källberg @Anka213 My solution was

parseHeader str = foldr1 (<|>) . map (`match` str) $ ["Start", "Finish"]

But that's longer than the original. - January 25th, 2017:

given f is type: f :: Int -> a -> Bool

for: g :: a -> Bool

g = (||) . f 2 <*> f 27

rewrite g using f only once in the definition - Denis Stoyanov @xgrommx ugly version but

(liftA2 . liftA2) (||) ($2) ($27) f - January 19th, 2017:

import Data.Tree.Merkle

mkleaf :: Show a => a -> Leaf a

mkleaf = uncurry Leaf . (show . hashDatum &&& id)

redefine using (<*>) - Denis Stoyanov @xgrommx smth like

mkleaf = uncurry Leaf . show . (hashDatum <$> (,) <*> id)

mkleaf = uncurry Leaf . show . (liftA2 (,) hashDatum id) - January 19th, 2017:

mkbranch1 :: Leaf a -> Branch a

mkbranch1 = uncurry Twig . (uncurry childrenHash . (dataHash &&& dataHash) &&& id)

redefine using (<*>)s(?)

## Monday, March 13, 2017

### January 2017 1HaskellADay 1Liners

Subscribe to:
Posts (Atom)