packages feed

language-dickinson-1.0.0.0: test/eval/matchSex.dck

%-

(:def address
  (:lambda dog sex
    (:match dog
      [Boy "boy"]
      [_ "girl"])))

tydecl sex = Boy | Girl

tydecl animal = Dog | Cat

(:def obliquePronoun
  (:lambda dog sex
    (:match dog
      [Boy "He"]
      [g "She"])))

(:def possPronoun
  (:lambda dog sex
    (:match dog
      [Girl "her"]
      [Boy "his"])))

; see https://github.com/vmchale/doggo-command-line/blob/master/src/main.rs
(:def greeter
  (:lambda dog (text, sex)
    (:match dog
      [(name, boyGirl)
        (:oneof
          (| "${name} is a good ${($ address boyGirl)}. ${($ obliquePronoun boyGirl)} tries ${($ possPronoun boyGirl)} best."))])))

(:def main
  ($ greeter ("Maxine", Girl)))