Skip to content

Instantly share code, notes, and snippets.

@epost
Last active November 2, 2018 18:06
Show Gist options
  • Save epost/29dd5fa6d9b62bdc5d81f46b52df1ed5 to your computer and use it in GitHub Desktop.
Save epost/29dd5fa6d9b62bdc5d81f46b52df1ed5 to your computer and use it in GitHub Desktop.
Rawan programmeercursus
module Main where
import Prelude
import Control.Monad.Eff.Console (logShow, log)
import Data.Tuple
import Data.Map (Map, lookup, singleton)
import TryPureScript
main = render =<< withConsole do
log "Rawan"
logShow (fst t1)
logShow (sec t1)
logShow (vat 100.0)
logShow (vat 200.0)
logShow (canDrink 17)
logShow (canDrink 21)
logShow (drinkyDrinky (canDrink 17))
logShow (drinkyDrinky (canDrink 21))
(logShow <<< drinkyDrinky <<< canDrink) 17
(logShow <<< drinkyDrinky <<< canDrink) 21
logShow true
logShow false
logShow (not true)
logShow (not false)
logShow (true && false)
logShow (true && true)
logShow (not false)
logShow (true && not true)
logShow (rl SweetSour)
logShow (rl2 Vinegar SweetSour)
log ("hoi Rawan: " <> show (Vinegar == Vinegar))
log "--- hier komen de smaakjes weer -------------"
logShow (rl3 Vinegar Paprika)
logShow (rl3 Vinegar SweetSour)
logShow (rl3 SweetSour Paprika)
log "--- some lambda stuff -------------"
logShow (f1 42) -- applying a named lambda (= lambda function, anonymous function)
logShow ((\x -> x+1) 41) -- applying an anonymous (inline) lambda
logShow (f2 3 4) -- applying a named lambda taking 2 parameters
-----------------------------------------------------------------
-- the backslash (\) is meant to look like a lowercase lambda
f1 :: Int -> Int
f1 = \x -> x+1
-- the backslash (\) is meant to look like a lowercase lambda
f2 :: Int -> Int -> Int
f2 = \x y -> x + y
-----------------------------------------------------------------
drinkyDrinky :: Boolean -> String
drinkyDrinky true = "here ye are lass!"
drinkyDrinky false = "feck off!"
drinkyDrinky' :: Boolean -> String
drinkyDrinky' = case _ of
true -> "here ye are lass!"
false -> "feck off!"
canDrink :: Int -> Boolean
canDrink age = age >= 18
vat :: Number -> Number
vat x = x * 0.21
data Flavour = Vinegar | Paprika | SweetSour
derive instance eqFalvour :: Eq Flavour
rl :: Flavour -> Boolean
rl Vinegar = true
rl Paprika = true
rl SweetSour = false
rl2 :: Flavour -> Flavour -> Boolean
rl2 Vinegar _ = true
rl2 Paprika _ = true
rl2 SweetSour _ = false
rl3 :: Flavour -> Flavour -> Boolean
--rl3 f1 f2 = rl f1 && rl f2
rl3 f1 f2 = rl f1 `and` rl f2
--------------------------------------------------------------------------------
and :: Boolean -> Boolean -> Boolean
and false false = false
and false true = false
and true false = false
and true true = true
-- rl3 Paprika Paprika = true
-- rl3 _ _ = true
-- rl3 f1 f2 = if f1 == Vinegar then true else false
-- rl3 f1 f2 = if f1 == true else false
--------------------------------------------------------------------------------
t1 = Tuple 'a' 3
-- sec :: Tuple Char Int -> Int
sec :: forall a b. Tuple a b -> b
sec = snd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment