annotate 6-Clojure/atomcache.clj @ 93:39084e2b8744

Add a function for word-aware text wrapping Potentially hugely inefficient because we iterate through the string character by character, but then splitting it first and iterating over words still needs to iterate over the string to know where to split.
author IBBoard <dev@ibboard.co.uk>
date Tue, 18 Jun 2019 21:05:00 +0100
parents eccc649d49a2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
83
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 (defn create_price_list
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 []
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 (atom {}))
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 ; We can't use get because it's part of clojure.core
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 (defn get_price
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 [prices name]
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8 (@prices name))
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 (defn set_price
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11 ([prices new_price_map]
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 (swap! prices merge new_price_map))
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 ([prices name price]
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 (swap! prices assoc name price)))
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 (def my_shares (create_price_list))
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 (set_price my_shares :GW 299)
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 (set_price my_shares :BT 1563)
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 (set_price my_shares :ROYALMAIL 29)
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 (println (get_price my_shares :BT))
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21 (println (get_price my_shares :FOO))
eccc649d49a2 Add Day 2 and Day 3 notes and example code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22 (println my_shares)