Mercurial > repos > other > SevenLanguagesInSevenWeeks
diff 2-Io/day2-operators.io @ 37:86668d32e162
Add Day 2 code
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 12 Sep 2017 20:58:51 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2-Io/day2-operators.io Tue Sep 12 20:58:51 2017 +0100 @@ -0,0 +1,21 @@ +# Operators are syntactic sugar and can be listed from a table: +OperatorTable println + +# Creating an operator involves defining it with a precedence +# (index based on the output from the previous table) +OperatorTable addOperator("xor", 11) + +# And then implementing it on appropriate prototypes +# Note that Io is open-edit, like Ruby, so we can screw with core stuff +# like Booleans and extend them +true xor := method(bool, if(bool, false, true)) +false xor := method(bool, if(bool, true, false)) + +# For some reason I have to work out, the prints don't work here +# They print the second value. But running in REPL works and return correct +# value (before printing wrong one) +(true xor true) println +(true xor false) println +(false xor true) println +(false xor false) println +