Skip to content

justinwoo/purescript-kazunoko

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kazunoko

Shitty pun for "Kazu" (数) for number/amount and "Kazunoko" (数の子) for herring roe

This is a joke, don't try to actually use it

Usage

-- inferred:
result1 :: SProxy "five"
result1 =
  K.add
    (SProxy :: SProxy "two")
    (SProxy :: SProxy "three")

-- inferred:
result2 :: SProxy "six"
result2 =
  K.subtract
    (SProxy :: SProxy "nine")
    (SProxy :: SProxy "three")

letsAdd
  :: forall l r o
   . K.Add l r o
  => IsSymbol l
  => IsSymbol r
  => IsSymbol o
  => SProxy l
  -> SProxy r
  -> Effect Unit
letsAdd l r = log s
  where
    o = K.add l r
    s = format (SProxy :: SProxy "{l} plus {r} is {o}")
      { l: reflectSymbol l
      , r: reflectSymbol r
      , o: reflectSymbol o
      }

letsSubtract
  :: forall l r o
   . K.Sub l r o
  => IsSymbol l
  => IsSymbol r
  => IsSymbol o
  => SProxy l
  -> SProxy r
  -> Effect Unit
letsSubtract l r = log s
  where
    o = K.subtract l r
    s = format (SProxy :: SProxy "{l} minus {r} is {o}")
      { l: reflectSymbol l
      , r: reflectSymbol r
      , o: reflectSymbol o
      }

main :: Effect Unit
main = do
  log "we can do some arithmetic!"

  letsAdd (SProxy :: SProxy "two") (SProxy :: SProxy "three")

  -- correctly errors: i don't know how to count...
  -- letsAdd (SProxy :: SProxy "three") (SProxy :: SProxy "eight")

  letsSubtract (SProxy :: SProxy "five") (SProxy :: SProxy "three")

  -- correctly errors: i don't know how to count...
  -- letsSubtract (SProxy :: SProxy "two") (SProxy :: SProxy "three")

  -- result
  -- we can do some arithmetic!
  -- two plus three is five
  -- five minus three is two

About

A fun type-level literal number arithmetic library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published