Added some guff to the README

This commit is contained in:
simon 2014-03-27 23:46:03 +00:00
parent ef5c6e9dc6
commit 881c4982bb

View file

@ -6,11 +6,37 @@ NOTE! I am LEARNING. This is not an example of how to do it.
## Usage ## Usage
FIXME The state of the machine is represented by a structure which is passed around between functions.
So you can make a machine with make-default-machine:
vending.repl=> (make-default-machine)
{:tendered nil, :output nil, :coins {:plack 4, :merk 1, :bawbee 4, :bodle 4}, :change nil, :stock {:teacake 5, :caramel-wafer 5, :snowball 5}, :message ""}
You can add coins to it with add-coin; as this is a Scots machine the coins you can add are merks, placks, bawbees and bodles.
vending.repl=> (add-coin (add-coin *1 :merk) :bawbee)
{:message "Added a :bawbee", :tendered (:bawbee :merk), :output nil, :coins {:plack 4, :merk 1, :bawbee 4, :bodle 4}, :change nil, :stock {:teacake 5, :caramel-wafer 5, :snowball 5}}
The machine serves good Scottish super-foods: caramel wafers, teacakes and snowballs. To get a teacake, try
vending.repl=> (get-teacake *1)
{:message "Enjoy your :teacake", :coins {:merk 2, :plack 4, :bawbee 4, :bodle 4}, :change (:bawbee), :output (:teacake), :stock {:teacake 4, :caramel-wafer 5, :snowball 5}}
There's very little error checking; if you try to add a dollar, I've no idea what will happen but it probably won't be good.
Finally if you add coins and decide you want them back, you can use coin-return:
vending.repl=> (coin-return (add-coin (add-coin (make-default-machine) :merk) :plack))
{:message "Coins returned", :output nil, :coins {:plack 4, :merk 1, :bawbee 4, :bodle 4}, :change (:plack :merk), :stock {:teacake 5, :caramel-wafer 5, :snowball 5}}
## Possible future development
My panned next phase for this is to make it drive an interactive web page, first entirely server-side, and then, if that works, client-side.
## License ## License
Copyright © 2014 FIXME Copyright © 2014 Simon Brooke, Ali King and others
Distributed under the Eclipse Public License either version 1.0 or (at Distributed under the Eclipse Public License either version 1.0 or (at
your option) any later version. your option) any later version, simply because that's the default the package template gave us.