Implementeer (een niet interactieve versie) van het bekende spel rock, paper scissors. De regels beschreven op wikipedia zijn:
De twee spelers tellen af en steken tegelijk zonder aarzeling de hand uit in de vorm van: een vuist (steen) wint van twee gespreide vingers (de steen maakt de schaar bot); een vlakke hand (papier) wint van een vuist (het papier bedekt de steen); twee gespreide vingers (schaar) winnen van een vlakke hand (de schaar verknipt het papier).
Definieer een datatype Move
met de drie keuzes Rock
, Paper
and
Scissors
. Instantieer Eq
en Show
voor Move
(indien mogelijk met
derive
).
Schrijf een datatype Result
(ofwel Win
, ofwel, Lose
, ofwel Draw
) om
aan te geven of je gewonnen of verloren hebt. Instantieer Eq
en Show
voor Result
(indien mogelijk met derive
).
Schrijf een functie outcome
die, gegeven twee moves, aangeeft of speler 1
gewonnen heeft.