-- let's learn some rules:
nothing-like |*> #=> 0 |_self>
a-little-like |*> #=> 0.3 |_self>
like |*> #=> 0.7 |_self>
a-lot-like |*> #=> 0.9 |_self>
exactly-like |*> #=> |_self>
-- learn the taste of an orange:
taste |orange> => |citrus> + |sweet> + |juicy>
-- learn the taste of a banana is nothing like that of an orange:
taste |banana> #=> nothing-like taste |orange>
-- ask the taste of a banana:
sa: taste |banana>
0.000|citrus> + 0.000|sweet> + 0.000|juicy>
-- learn the taste of a mandarin is a lot like that of an orange:
taste |mandarin> #=> a-lot-like taste |orange>
-- ask the taste of a mandarin:
sa: taste |mandarin>
0.900|citrus> + 0.900|sweet> + 0.900|juicy>
Anyway, just some proof of concept, I suppose.
Next example:
-- learn: "a person is happy if they are whistling".
is-happy |*> #=> if(is-whistling |_self>,|yes>,|>)
-- learn Fred is whistling:
is-whistling |Fred> => |yes>
-- now ask some questions:
sa: do-you-know is-happy |Fred>
|yes>
sa: is-happy |Fred>
|yes>
sa: do-you-know is-happy |Sam>
|no>
sa: is-happy |Sam>
|>
Update: for lack of a better place to put this one.
-- learn a couple of "is-greater-than" operators:
is-greater-than-0 |*> #=> do-you-know push-float drop-below[1] pop-float |_self>
is-greater-than-5 |*> #=> do-you-know push-float drop-below[5.01] pop-float |_self>
-- now take a look:
sa: table[number,is-greater-than-0,is-greater-than-5] range(|-5>,|10>) +--------+-------------------+-------------------+ | number | is-greater-than-0 | is-greater-than-5 | +--------+-------------------+-------------------+ | -5 | no | no | | -4 | no | no | | -3 | no | no | | -2 | no | no | | -1 | no | no | | 0 | no | no | | 1 | yes | no | | 2 | yes | no | | 3 | yes | no | | 4 | yes | no | | 5 | yes | no | | 6 | yes | yes | | 7 | yes | yes | | 8 | yes | yes | | 9 | yes | yes | | 10 | yes | yes | +--------+-------------------+-------------------+And we can also easily enough count the number greater than 0 in that range:
(makes use of linearity of literal operators, and that kets add)
sa: is-greater-than-0 range(|-5>,|10>)
6.000|no> + 10.000|yes>
And how many are greater than 5:
sa: is-greater-than-5 range(|-5>,|10>)
11.000|no> + 5.000|yes>
Update: a table version of "is-happy":
sa: is-happy |*> #=> if(is-whistling |_self>,|yes>,|>) sa: is-whistling |Fred> => |yes> sa: do-you-know-is-happy |*> #=> do-you-know is-happy |_self> sa: table[name,do-you-know-is-happy,is-happy,is-whistling] (|Fred> + |Sam>) +------+----------------------+----------+--------------+ | name | do-you-know-is-happy | is-happy | is-whistling | +------+----------------------+----------+--------------+ | Fred | yes | yes | yes | | Sam | no | | | +------+----------------------+----------+--------------+
No comments:
Post a Comment