- May 10th, 2017:
Define (^) :: (a -> a) -> Int -> (a -> a)
The 'power'-function where f ^ 3 = f . f . f - Conor McBride @pigworker flip ((ala Endo foldMap .) . replicate)
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.
Friday, June 16, 2017
May 2017 1Liners 1HaskellADay
Wednesday, June 7, 2017
May 2017 1HaskellADay problems and solutions
- May 25th, 2017: Today's #haskell problem looks at the interconnectedness of languages as a graph.
- May 24th, 2017: Today's #haskell problem continues the exploration of spoken language roots catalogued in @wikidata. We present the first half of the #haskell solution that allows us to parse @wikidata results with optional values.
- May 23rd, 2017: I preface today's #haskell problem with a discussion on dirty/muddled data in @wikidata then continue onto languages. Today's #haskell solution shows us, e.g.: Cornish, Welsh and Breton are in the Brythonic language family. @wikidata
- May 22nd, 2017: Today's #haskell problem looks at spoken languages catalogued in @wikidata. Today's #haskell solution shows us @wikidata has NOTHING for the count of ENGLISH-speakers! #strangebuttrue
- May 17th, 2017: The NSA called. They are wanting the solution to today's #haskell Pentagon-number problem. Now.
- May 16th, 2017: Today's #haskell problem ... and Madonna! ... want you to justify my num! We find out that ALL YOUR BASE ARE BELONG TO US in today's #haskell solution
- May 15th, 2017: Today's #haskell problem warns us: "ACHTUNG, LOOKENPEEPERS! ZO RELAXEN UND WATSCHEN DER BLINKENLICHTEN." Today's #haskell solution taught me SO MUCH German. I mean SO MUCH!
- May 10th, 2017: For today's #haskell problem: when doing egg-arithmetic, we do not things by halves! ... or, perhaps, we do! Today's #haskell solution is EGGS! EGGS AS A POWER FUNCTION! EGGS EVERYWHERE!
- May 8th, 2017: Today's #haskell problem puts us 🎶 "Back on the Hang Gangs!" 🎶 Today's #haskell solution: "We must, indeed, all hang together or, most assuredly, we shall all hang separately."
- May 5th, 2017: HAPPY #CincodeMayo ... BUT ON A TUESDAY?!? What year was that, then? Today's #haskell problem. Today's #haskell solution shows Cinco de Mayo happens EVERY YEAR?!? Who da thunk it?
- May 3rd, 2017: Today's #haskell problem: April, May, and June are three sisters, and you have to find their ages. ... #awkward. Today's #haskell solution we have the old 1, 2, 3 sisters. Not that I'm saying these sisters are old. Not me. Nope.
- May 2nd, 2017: Ah! May! When Spring is in the Air! And #haskell-ers thoughts turn to Love* *solving today's problem. Today's #haskell solution presents a conundrum: Is the solution "spring" or "spring"? Hm. Tough call!
- May 1st, 2017: Happy May Day, #haskell-ers! Today we combat the academic illness: dafundzarlow ... let that sink in. Today we see two solutions to the #haskell problem of budgeting for cake and candy at Maura's school party. And to those of you who think #haskell has no practical application? Pooh on you! BUDGETING CAKE AND CANDY AT PARTIES IS TRÈS PRACTICAL! 😡
Wednesday, May 10, 2017
April 2017 1HaskellADay 1Liners
- April 14th, 2017: given
eitherOr, neitherNor :: Eq a => a -> a -> a -> Bool
Is eitherOr not neitherNor?
Prove or disprove. - April 14th, 2017: given
neitherNor :: Eq a => a -> a -> a -> Bool
andNot :: Eq a => a -> a -> Bool
How do you compose neitherNor 1 0 and andNot 4? - April 11th, 2017:
opts :: Credentials -> Options
opts c = defaults & auth ?~ basicAuth (pack $ keyToken c) (pack $ secretToken c)
point-free-itize
given:
data Credentials = Credentials { keyToken, secretToken :: String }
and (?~) and (&) are from Control.Lens
Snaps for elegance
The above code from quillio/Twillo.hs by ismailmustafa
Monday, May 1, 2017
April 2017 1HaskellADay Problems and Solutions
- April 26th, 2017: Today we do SCIENCE! (ballistic physics, actually) with #haskell.
- April 25th, 2017: "MOM! MOM! NO BOOK!" Today's #haskell problem: help little Johnny or little Jane's mom find the book! Today's #haskell solution solves mom + mom + no == book, where k == 9 in the blink of an eye with SCIENCE!
- April 21st, 2017: Today's #haskell problem analyzes @wikidata when it has very poor data-quality and -quantity. #Alaska
- April 19th, 2017: Today's #haskell problem looks at autom(agic)ally generating a SPARQL eye-color query. Today's solution gives EyeColors reified to #haskell values from a @wikidata SPARQL query
- April 18th, 2017: Today's #haskell problem takes on the HUGE task of automating writing simple SPARQL queries. Today's #haskell solution presents a simple, well-typed @wikidata SPARQL query builder.
- April 17th, 2017: We look at US States and their Capitals as SPARQLwikidata.org query for today's #haskell problem. For today's #haskell solution we had to drill down into depth of #wikidata resulting JSON to get our State Capitals.
- April 14th, 2017: Today's #haskell problem we make our first foray (again) into the world of @wikidata. What color are your eyes? We get our results back as JSON from our wikidata.org SPARQL query for today's #haskell solution.
- April 13th, 2017: For today's #haskell problem we have a little multiplication puzzle. Today's #haskell solution is 'Prolog-escque.' What would your approach be? Oh, and function-composition with (<*>)
- April 12th, 2017: Today's #haskell problem is a little word puzzle via the Mensa Genius Quiz-a-Day Book by Dr. Abbie Salny. Today's #haskell solution finds you looking rather smart, I must say!
- April 7th, 2017: You're decorating for Spring so you need to write a constraint solver because you're in #Mensa for today's #haskell. tfw you write all these generate and test functions and replace them with a simple filter application #haskell
- April 6th, 2017: Today's #haskell problem is (kinda) based on the OS upon which all other OS's bow down before: FORTH. Fight me. And today #haskell solution we find a use for the </> operator.
- April 5th, 2017: Today's #haskell problem looks at the rise of #bitcoin prices over the past year. Today's #haskell solution runs investment scenarios over a year of historical #bitcoin price data
Tuesday, April 11, 2017
March 2017 1HaskellADay 1Liners
- March 30th, 2017:
divide :: (a -> Either b c) -> [a] -> ([b], [c]) This function is somewhere easy to get to, right?
via @fmapE - @fmapE: divide f = foldr (either (first . (:)) (second . (:)) . f) ([], [])
- SocialJusticeCleric @walkstherain divide f = Data.Either.partitionEithers . fmap f
- andrus @andrus divide f = foldMap $ (swap . pure . pure ||| pure . pure) . f
- matt @themattchan divide = partitionEithers ... map where ... = (.).(.)
- March 13th, 2017:
Palindromes have nothing to do with today's #haskell problem of anagrams. So what.
Define
palindrome :: String -> Bool
elegantly - SocialJusticeCleric @walkstherain all id . (zipWith (==) =<< reverse)
- SocialJusticeCleric added: TIL Data.Foldable.and
- bazzargh @bazzargh ap (==) reverse?
- March 13th, 2017:
type Bag a = Map a Int
anagram :: Ord a => [a] -> [a] -> Bool
anagram src = (== Bag.fromList src) . Bag.fromList
Redefine with <*> - Denis Stoyanov @xgrommx why not?
anagram = (==) `on` Bag.fromList
Wednesday, April 5, 2017
March 2017 1HaskellADay Problems and Solutions
- March 31st, 2017: We look at pedestrian-vehicular injuries and fatalities for today's #haskell problem. Today's #haskell solution creates an array of maps to get our scanr-solution. I'm game.
- March 29th, 2017: What with #marchmadness it's time we put #haskell to solving this task, besides: BABY NEEDS A NEW PAIR OF SHOES!
- March 28th, 2017: You ever have one of those days where you know you were supposed to do SOMEthing? "Today's" #haskell problem.
- March 24th, 2017: Tennis is very good exercise, and a very good #haskell exercise for today. AHA! #probability
- March 23rd, 2017: Today's #haskell problem examines the importance of wearing matching ... RED?!?! ... socks? Remember that one (one?) wacky professor in college? Today's #haskell solution shows that was the tip of the iceberg.
- March 22nd, 2017: Today's #haskell problem definitively proves Goldbach's Conjecture for ALL even numbers ... um, in a sample set. Today we definitively proved Goldbach's Conjecture. See you at the pub, then, eh?
- March 20th, 2017: Today's #haskell problem: 2 + 3 + 5 + 7 + 11 + ... what prime numbers can be written as a sum of consecutive primes? So there are primes from the sum of consecutive sequence of primes starting at 2, but there's a lot more to it, too!
- March 17th, 2017: Today's #haskell problem is brought to you by the letter 'P': primality and permutations. Today's #haskell solution shows this projecteuler.net problem has clear bounds, which made it a gimme for me.
- March 16th, 2017: If you break it down, finding the square-free numbers in a set of 614 numbers isn't that hard. Today's #haskell problem. Winnowing down makes testing for prime-square factors much easier in today's #haskell solution.
- March 15th, 2017: For today's #haskell problem we deconstruct the construction of the Pascal's Triangle. Today's #haskell solution involves some BIG NUMBERS! ... Good thing Haskell is a mathematical language, then! 😎
- March 14th, 2017: For today's #haskell problem, being π-day, we are going to look at the convergence of e, via projecteuler.net. Continued fractions are so easy in #haskell that it was embarrassing writing this code!
- March 13th, 2017: Today's #haskell problem comes by way of @HaggardHawks @NicWilko (Ult): an anagram-i-verifier-...thingie. Today's #haskell solution uses #Latin to solve the anagrammatic sonnet with a Q.E.D.-function (not really). Q.E.D. 😎
- March 10th, 2017: Categorizing snippets to languages by ... word-endings? Ah, bon?
- March 9th, 2017: "A little less conversation; a little more perfect matching of RNA strands, baby!" #haskell problem by Elvis Presley.

- March 7th, 2017: For today's #haskell exercise we look at nucleotide transitions and transversions. We solve today's #haskell problem using purine/pyramidine characteristics of nucleotide bases.
- March 6th, 2017: For today's #haskell problem we look at numbers of combinations of alternate RNA splicing. Today's #haskell solution was answered in 1 line. Sweet!
- March 3rd, 2017: Let's take a break from pathing today, because it's FRIDAY! Today's #haskell problem is about partial permutations. Today's #haskell solution shows choosey mothers choose JIF! ... and partial permutations, too! ... but OTOH: SKIPPY!
- March 2nd, 2017: In today's #haskell problem @geophf admits he's stupid, and in writing! Oh, and we look for the 'minimumest' path. AHA! Today's #haskell solution gives us a super-fast minimumest path through DNA strands, ... or does it? So, the error for last-element terminating early in minimumest path is corrected, but we still have work to do!
- March 1st, 2017: Informed, or guided, subsequencing? That's what we'll be looking at for today's #haskell problem. Today's #haskell solution shows that, even though informed, common subsequences explode for even small sequences.
Monday, March 13, 2017
January 2017 1HaskellADay 1Liners
- 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(?)
Subscribe to:
Posts (Atom)


















