- 2020-10-21: Curry `key` from
`secondPassFilter :: Ord a => a -> Set a -> Maybe b`

secondPassFilter key = spf key . Set.lookupGE key

Given`spf :: a -> Maybe a -> Maybe b`

- 2020-10-21: given:
`updater :: b -> Maybe b`

and`firstPass :: Ord a => Map a b -> Map a b`

`firstPass 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.

# Typed Logic

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.

## Wednesday, October 21, 2020

### October 2020 Haskell 1-Liners

## Friday, October 9, 2020

### October 2020 1HaskellADay Problems and Solutions

- 2020-10-27: Military alliances from a @wikidata query.
- 2020-10-26: Today's #haskell problem captures the Cypher of countries, continents, and airbases.
- 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.

## Wednesday, September 2, 2020

### September 2020 Haskell Problems and Solutions

- 2020-09-09: Today's #haskell exercise is to compile our book-word-net into a Haskell module. The #haskell solution compiled the August 2020 Gutenberg top 100 read books into Haskell terms.
- 2020-09-08: Data analytics on our top 100 gutenberg books is today's #haskell exercise. Did you know that there approximately 2000 English words in common usage? Today's #haskell solution: "Sounds about right."
- 2020-09-01: Today's #haskell problem is reducing a map of mapping of information to maps to a map. HOW HASKELL-Y! Yesterday's #haskell solution updated both problem and solution and made some data-discoveries along the way. Neat-o!

## Tuesday, September 1, 2020

### February 2019 Haskell 1-liners

- February 18th, 2019:

Define ext :: (Maybe a, b) -> Maybe (a,b)

e.g.: ext (Just 5, "Hi") = Just (5, "Hi") - Al͜l ̸͑ha͂͟il̶! @TechnoEmpress \o/
- cλementd @clementd `fmap swap. sequenceA . swap` :-)
- Raveline @Raveline bisequence . second pure
- Alexey Radkov @sheshanaag uncurry (flip $ fmap . flip (,))
- a fool @fresheyeball ext = \case (Just x, y) -> Just (x, y); _ -> Nothing

### September 2020 Haskell 1-liners

2020-09-08: given

removeInfreqs :: Set String -> Ontology -> Ontology removeInfreqs infrequentWords ont = Map.map (\wordcounts -> foldl (flip ri') wordcounts infrequentWords) ont

where

`Ontology`

is a map-of-maps.- remove
`flip`

to get the same functional result. - curry away
`ont`

from the function`removeInfreqs`

- curry away
`wordcounts`

from the map-lambda function. curry away

`infrequentWords`

from the function`removeInfreqs`

n.b.: This curry may not be as straightforward as the other curries.

- remove
2020-09-01: Given all of the above, and now that you've curried the above lambda to [SPOILER]:

Curry away`\key -> const (not (Set.member key stoppers))`

`key`

from this new lambda.

## Wednesday, August 26, 2020

### August 2020 1HaskellADay 1Liners

- 2020-08-31:
>>> :t Map.filterWithKey Map.filterWithKey :: (k -> a -> Bool) -> Map k a -> Map k a

we have this filtering function:

`\key _val -> not (Set.member key stoppers)`

`_val`

is unused. Curry it away. - 2020-08-28:
`rmFront :: Set Char -> String -> String`

rmFront weirds str = dropWhile (flip Set.member weirds) strSimple currying questions: can this function-implementation be simplified with currying? Can it be simplified ... MORE? Answers: yes, and yes. Show your implementation. - 2020-08-26: We have this:
`\info -> importBook info >>= return . (info,)`

There are way too many`info`

-references. What's a better way to write this expression? - Five solutions from @noaheasterly:
- runKleisli (id &&& Kleisli importBook)
- liftA2 (liftA2 (,)) return importBook
- liftA2 (fmap . (,)) id importBook
- traverse importBook . join (,)
- traverse importBook . (id &&& id)

## Monday, August 3, 2020

### August 2020 1HaskellADay Problems and Solutions

- 2020-08-31: For today's #haskell problem we learn the nature of the words "the" and "yesterday." Fundamental things. SCROOGE! Yesterday's #haskell solution shows us that "scrooge" was the most-written word in "A Christmas Carol." Fancy that!
- 2020-08-28: Today's #haskell problem: a word-frequency analysis, ... a CLEAN-word-frequency analysis. Today's #haskell solution. Amazing, isn't it, that the word Charles Dickens wrote the most, by far, was 'the'. #writerslife
- 2020-08-27: We're looking at 'weird characters' and 'weird words' for today's #haskell problem. We found words, weird words, and the weird characters in those weird words in today's #haskell solution.
- 2020-08-26: For today's #haskell problem, let's download the top-100 books from project gutenberg! For today's #haskell solution, we have the top-100 gutenberg books, downloaded and ready for analysis!
- 2020-08-25: "Project Gutenberg, here I come!" is my battle-cry for today's #Haskell problem. We have an index to book indices for yesterday's #haskell solution.
- 2020-08-24: Multiplication using cosines is called ... Prosthaphaeresis... and also called: "today's #haskell problem."
- 2020-08-21: Gimme a hint? ... or two? Today's #haskell problem is to find words in dictionaries with the help of supplied hints. "Alien." The word was "alien" for today's #Haskell solution (because it's always the aliens) (I didn't say that.) I, FOR ONE, WELCOME OUR NEW ALIEN OVERLORDS!
- 2020-08-20: Yesterday we did word-lookups from provided dictionaries. Today's #haskell problem is a little analysis (a word histogram) of those word-dictionaries.

"fromList [(1,234371)]" That, there, them's alotta words, yup. Yesterday's #haskell solution. - 2020-08-19: SKRIBBL.io! (A part of) SKRIBBL.io is the #Haskell challenge for today. And the #haskell solution, monad-style!
- 2020-08-10: HEAPS! Luv me sum HEAPS! Today's #haskell problem is to define the Heap collection and its operations.
- 2020-08-03: Today's #haskell problem is to generate random permutation of active team members. So, yeah: random permutes down low on the team members, d'#Haskell

Subscribe to:
Posts (Atom)