- 2021-01-28: Opposite problem:
You have: [(a, Set b)]
you want: [(a, b)]
e.g.: [("hi", fromList [1,2,3]), ("bye", fromList [4,6,7]) ->
[("hi",1),("hi",2),("hi",3),("bye",4),("bye",6),("bye",7)]
Interestingly, Set is not a Monad. wut. How do you get around that problem? - D Oisín Kidney @oisdk (>>= traverse toList)
- mine: concatMap (sequence . second Set.toList)
- 2021-01-28:
We have [(Set a, b)]
we want [(a, b)]
where each element of Set a is paired with b, e.g.:
[(fromList [1,2,3], 'a'), (fromList [4,5,6], 'b')]
becomes
[(1,'a'),(2,'a'),(3,'a'),(4,'b'),(5,'b'),(6,'b')] - Steve "wash your hands" Trout @strout:
concatMap (uncurry (liftA2 (,)) . bimap toList pure) - insatiable mask wearer @tim_1729
[(a,b) | (s,b) <- xs, a <- (toList s)] - Today, 2021/01/21, is:
- Can be written with only 3 digits, What other dates can be so written? Also:
- a day where the month and day are NOT amalgamation the year. But which dates are amalgamations?
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.
Thursday, January 21, 2021
January 2021 1HaskellADay 1Liners
Wednesday, January 20, 2021
January 2021 1HaskellADay Problems and Solutions
- 2021-01-29: Ambitious! Let's upload some indexed wineries with geo-locations to the graph-store for today's #haskell problem! For today's #haskell solution we added geo-locations and wikidata QNames for some wineries, with shout-outs to @oisdk and @tim_1729, incorporating their #1Liner answers into the solution.
- 2021-01-27: We continue updating our wine-graph with wikidata. Today we update countries in the graph with wikidata QName values. Today's #haskell solution corrects the names of the countries and adds their wikidata QNames, or, put another way: O? Canada?!? NANI???
- 2021-01-26: For today's #haskell problem we compare neo4j graph data to wikidata for wineries now, and what is the "No Country"? And how do I get citizenship there?
- 2021-01-25: Okay, looking at countries aliased between wikidata and a neo4j graph for today's #haskell problem. Today's #haskell solution loads then uses a graph to resolve aliased country names.
- 2021-01-22: Today's #haskell problem: we inject countries of wineries extracted from @wikidata into the mix to ... simplify (?) things? ... wait? There're countries mismatched, too? How ... surprising. 🙄 Today's #haskell solution shows us that wine is "No Country" for old men. ... wait ... wut?
- 2021-01-21: Today's #haskell problem is to compare wineries from @wikidata to those in a @neo4j graph. Also. Did you know that there's a winery in Oregon named "Sweet Cheeks"? Now you do. You're welcome. Today's #haskell solution shows that 125 wineries match, more than 400 don't. Lots of aliasing work ahead of us.
- 2021-01-20: Today's #haskell problem asks you to parse wineries and their geo-locations from a JSON file. Simple problem; simple solution. Also: wine a bit. It helps.
Tuesday, December 1, 2020
December 2020 1HaskellADay Problems and Solutions
- 2020-12-22: Monads are burritos, but today's #haskell problem brings together the whole enchilada! In today's #haskell solution we find that whole enchilada is a hot tamale! ... and also map all the air bases of an alliance.
- 2020-12-21: Collecting the airbases for all the countries of an alliance from the graph-store is today's #haskell exercise. Today's #haskell solution shows how to work with the `withArray` Aeson function.
- 2020-12-18: For today's #haskell problem, we extract an alliance, its member countries, and their capitals from the graph-store to display these data on a global-viewer, such as google Earth. For today's #haskell solution, with #KML and @neo4j, we see that this is an alliance that nearly spans the globe!
- 2020-12-16: Extracting an alliance and its member countries from a graph store is today's #haskell problem. In today's #haskell solution we find that, hm, marshalling aggregated data is more than a bit of work!
- 2020-12-15: "What is the capital of Singapore?" for today's #haskell problem. Today's #haskell solution shows that the capital of Singapore is ... well: SINGAPORE! YAY!
- 2020-12-11: For today's #haskell problem we will be adding lats and longs to country capitals in our graph-store. Capitals now have lats/longs in the graph-store.
- 2020-12-10: Today's #haskell problem is to relink capitals from aliases to source countries. Today's #haskell solution clarified the problem, then provided a data-correction-solution.
- 2020-12-09: Reassociating alliances from alias nodes to their source country nodes. Today's #haskell solution: and we update aliased-alliances-... oops! Unicode. Joy.
- 2020-12-07: For today's #haskell problem, we filter out unicode points in both countries and their aliases, ... but we also ask: is filtering the right way to go, or are unicode points being properly represented in JSON by Data.Aeson? Today's #haskell solution provides aliases to country names (... even as we add some manually ... *cough* #PleaseIgnoreTheManBehindTheCurtain)
- 2020-12-03: Today's #haskell problem: adding alias names to a country ... should be simple? BUT UNICODE! :( Today's #haskell solution: UNICODE FIXED FOR ALIASES! WOOT! ... but what about for the source countries? IM CRIE! 😭
- 2020-12-02: Yesterday, we triaged data for correction. Today #haskell problem is data correction, part I: adding `new` countries we missed before. Today's #haskell solution: o, Guinea-Bissau, be ye no longer an orphan, but be home, now, in Africa!
- 2020-12-01: Data correction. Half the problem of data-correction is to realize that you must do a data-correction. The other half of half the problem is to gather the data that needs to be corrected, along with the context of the correction: today's #haskell problem. Today's #haskell solution shows that the concept of triage is so helpful in setting up to solve data-correction problems.
Friday, November 13, 2020
November 2020 1HaskellADay 1Liner problems and solutions
- In my Data.XHTML
library
Curry away theprintXML xml = (\elt -> printElementWithOffset elt 0 >> return elt) (rep xml)xml-argument to theprintXML-function
Tuesday, November 3, 2020
November 2020 Haskell Problems and Solutions
- 2020-11-27: Is the morse code table generated from a graph better than by-hand? In today's #haskell problem, WE FIND OUT! 😤 Today's #haskell solution shows I did code the morse table by hand correctly! *whew* and also show how to extract data from a graph-store. And! has Konami's super-secret cheat-code! ^^vv<><>ba (shh! Don't tell anyone!)
- 2020-11-25: 'Lorem Ipsum' never looked so good ... IN MORSE CODE! :< Today's #haskell problem. Today's #haskell solution shows that Cicero had words. Yes, he did.
- 2020-11-23: Today's #haskell problem: ALLIANCES o' the WORLD! UNITE! (like Wonder Twin powers). As today IS Tuesday, it IS Belgium! Displaying the countries of NATO.
- 2020-11-20: If today WERE Tuesday, it would be ... Belgium. Today is Friday, however. (whispered: but it's still Belgium). Today's #haskell problem: render a country's air-power as KML to display on earth.google.com, or some such-like. Today is Friday, so this must be ... Bruxelles! ... I'll allow it. Today's #Haskell solution maps Brussels and all the air bases of Belgium.
- 2020-11-18: As yesterday's problem of enhancing countries with additional information was SO EASY 🙄 for today's #haskell we'll take what we learned yesterday and enhance our stored continents with wikidata.org information. I'll let the band Toto explain today's #Haskell solution. "I BLESSED THE QID IN AAAAAAFRICA!" 🎵🎶 Thanks, fellahs. 🙄😎
- 2020-11-17: We find out capitals of ... um: 'thingies' (?) from wikidata.org for today's #haskell problem. Belgium has a wikidata.org q-id; captured in our knowledge graph. Belgium has a capital, too: Brussels, along with a lat/long coordinate; also captured. Today's #haskell solution was to map all q-id's and capitals to countries of the world.
- 2020-11-13: Today's #haskell problem? We convert our alliances and airbases graph into XML (specifically, KML). Why? you ask? BECAUSE WE CAN! ... and to get ready for ... this: #geodesicmapping Today's #haskell solution is our first two folders in KML. I'M SO PROUD OF YOU! ... hey! I can see my house from here!
- 2020-11-12: How big is our unicode-... dare I call it a 'problem'? It's not a 'problem,' but it's stopping us from talking with the REST endpoint successfully. So, today's #haskell problem is: how many non-ASCII unicode points do we have in our Alliances? You want alliances-as-a-graph? You got alliances-as-a-graph!
- 2020-11-11: For today's #haskell problem we attempt to upload our alliances to our Continent/Country/Airbase graph. HOW WILL THIS ATTEMPT TURN't OUT? The suspense. It's killing me. IT TURN't OUT BAD! IT TURN't OUT BAD! Bad unicode! Bad! le sigh. Today's #haskell solution (which was for yesterday's problem) leads to tomorrow's (today's, actually) Haskell problem. So it goes.
- 2020-11-10: The BIG KAHUNA: the military alliances of the world, derived from both wikidata and wikitext. Bringing it all together with the Organization of American States is today's #haskell problem. #BigKahuna Today's #haskell solution: and here we ... [wait for it] ... go!
- 2020-11-09: In today's #haskell exercise, we add the United Nations to the AllianceMap. Today's #haskell solution adds the United Nations to the map of world military alliances.
- 2020-11-06: For today's #haskell problem we add the European Union to the list of military alliances. Today's #haskell solution: European Union from wikidata.org JSON, GET!
- 2020-11-05: Today's #haskell problem: rolling in missing alliances and aliases (and implementing alias-parsing). 42. That's the number of alliances today's #haskell solution collected from wikitext. Coincidence? I THINK NOT! #DeepThought
- 2020-11-04: "We have work to do!" el geophf declares. And so, the #haskell work: missing alliances. The good news is that there's bad news: today's #haskell solution shows that we've missed 35 alliances in our parsing.
- 2020-11-03: Today's #haskell problem: I give you a new, funky parser for new, funky alliances! ... and who was it who said that Haskell is no fun? We refine our parsed results, by hand-parsing missed results for today's #haskell solution.
Wednesday, October 21, 2020
October 2020 Haskell 1-Liners
- 2020-10-21: Curry `key` from
secondPassFilter :: Ord a => a -> Set a -> Maybe b
secondPassFilter key = spf key . Set.lookupGE key
Givenspf :: a -> Maybe a -> Maybe b - 2020-10-21: given:
updater :: b -> Maybe b
andfirstPass :: Ord a => Map a b -> Map a bfirstPass m = foldr (Map.update updater) m (Map.keys m)
#Curry away `m` from the firstPass-function - Social Justice Cleric @noaheasterly
firstPass = foldr (Map.update updater) <*> Map.keys - 2020-10-20:
all (\c -> any (`isPrefixOf` c) setb) notinb
#Curry away the `c` lambda argument.
Friday, October 9, 2020
October 2020 1HaskellADay Problems and Solutions
- 2020-10-30: Today's #haskell problem is to read and to parse a wikitext file to get a comprehensive list of military alliances. Parsing wikitext of alliances of the world... WITH #haskell!
- 2020-10-28: Today's #haskell problem is to ingest military alliances of the world from http://wikidata.org as JSON. The #haskell solution: (*:)-operator and a higher-order alter-function FTW!
- 2020-10-26: The previous week we've examined wikidata for countries, continents and airbases. For today's #haskell exercise, let's memorialize our findings.* 'memorialize our findings' is a fancy-pants term for 'print statement,' ICYMI. For the #haskell solution, "We are now going to introduce some steps that are a bit more difficult... Ready. Set. And. Begin."
- 2020-10-23: Today's #haskell problem: "Unicode? What, even, is that?" ... sez Haskell, smh. Also, if you know how to get Text not to escape unicode points on output (to, say, a REST endpoint), much obliged if you told me this dark magic. Today's #haskell solution shows airbases (with their associated countries) added to the graph database.
- 2020-10-20: Next evolutionary step. We have Continents and countries as data structures. For today's #haskell problem let's find out how we can (can't?) merge in airbases with countries. Hoo, doggies! "Upload airbases to the graph database!" he said. "It'll be easy!" he said. Today's #haskell solution, if not in book-form, then in book-length!
- 2020-10-16: Map of a -> b or b -> a? ... If you're asking that question, why not Graph? Today's #haskell exercise. A mapping of continents to countries. Surprisingly, wikidata.org does not have this as data amenable to extraction.
- 2020-10-15: From continent->country mapping to country->continent mapping for today's #haskell problem. `sequence` is the secret-sauce for today's #haskell solution.
- 2020-10-14: Today's #haskell problem is to get countries by continent from a ... 'markdown' file? That is not markdown. Deal with it. Countries: meet your Continents.
- 2020-10-13: Okay. #StringsAreWrong. Everybody knows this. Wikidata: "Let's encode LongLats as strings ... IN JSON!" Please let's not. Today's #haskell exercise. The solution that produces airbases with lat/longs. REAL lat/longs, smh.
- 2020-10-12: Today's #haskell problem is airbases of the world from wikidata.org ... with some duplicates. Today's #haskell solution reads in JSON, even ... 'JSON' that encodes 'LongLat's (not lat/longs) as ... strings? Really? Yes, even points-as-strings. Remember: #StringsAreWrong ~ Richard A. O'Keefe, 26 April 1994
- 2020-10-09: Today's #haskell problem is this: Production data: "Let's see if we can make the simple act of parsing a 'JSON file' [that isn't a JSON file] impossible for the ol' el geophf!" Nice try, production data. Nice try.
Subscribe to:
Posts (Atom)






















