changeset 97:85a5e9a6ef5c

Add more notes on extracting Just/Maybe values
author IBBoard <dev@ibboard.co.uk>
date Sun, 30 Jun 2019 16:09:44 +0100
parents f548c8460d15
children 58f9c6e20f02
files 7-Haskell/day3.hs
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/7-Haskell/day3.hs	Sun Jun 30 15:50:33 2019 +0100
+++ b/7-Haskell/day3.hs	Sun Jun 30 16:09:44 2019 +0100
@@ -3,6 +3,7 @@
 --  * https://www.haskell.org/tutorial/monads.html
 --
 -- Pre-existing monads: https://hackage.haskell.org/package/base-4.12.0.0/docs/Control-Monad.html#g:2
+-- and https://wiki.haskell.org/All_About_Monads#Introduction_2
 
 module Day3 where
     -- Build a "hash" table (actually a simple lookup in a key-value list, because hashes are hard)
@@ -26,6 +27,8 @@
     -- Note 3: I can't get anything out of this other than "Just <val>", even if I include ">>= return"
     -- Example usage: Just hashtable >>= ht_lookup "Phonetic" >>= ht_lookup "Greek" >>= ht_lookup "alpha"
     -- This is monadic because "Just hashtable >>= ht_lookup "Phonetic" >>= ht_lookup "foo" >>= ht_lookup "alpha" >>= return" doesn't explode but returns Nothing
+    -- To unwrap, we need something like "fromMaybe "" (Just hashtable >>= ht_lookup "Phonetic" >>= ht_lookup "Greek" >>= ht_lookup "alpha")" which returns the value or the empty string
+    -- BUT we need to get our value types to match (and we need to do "import Data.Maybe" first)
     ht_lookup :: String -> [(String, a)] -> Maybe a
     ht_lookup _ [] = Nothing
     ht_lookup search_key ((key, value):tail)