前章で述べたように、3つの動詞がひとつながり(sequence)となって前後から独立している場合をフォーク(fork)と呼び、単項動詞の場合と二項動詞の場合、下記のように定義できる。
g g / \ / \ f h f h
/ \ / \ |
図は、視覚的なイメージである。
以下の各文を実行し意味を述べよ。なお、%:(パーセントコロン)はルートを求める動詞であり、](右角かっこ)はアイデンティティ関数である。
a=: 8 7 6 5 4 3 b=: 4 5 6 7 8 9 2 %: b NB.bの二乗根 2 2.23607 2.44949 2.64575 2.82843 3 3 %: b NB.bの三乗根 1.5874 1.70998 1.81712 1.91293 2 2.08008 (+/ % #) b NB.bの算術平均(arithmetic mean or average) 6.5 (# %: */) b NB.bの幾何平均 6.26521 (] - (+/ % #)) b NB.平均からの乖離(二重フォーク) _2.5 _1.5 _0.5 0.5 1.5 2.5 (] - +/ % #) b NB.同上(かっこなし) _2.5 _1.5 _0.5 0.5 1.5 2.5 a (+ * -) b NB.二項動詞のフォークの例 48 24 0 _24 _48 _72 (a^2)-(b^2) 48 24 0 _24 _48 _72 a (< +. =) b NB.小なりまたはイコール 0 0 1 1 1 1
平均からの乖離はフォークとフックの組合せの方が普通かと思うけど、まだこれからなのかな?
(- (+/%#)) b _2.5 _1.5 _0.5 0.5 1.5 2.5 (-+/%#) b _2.5 _1.5 _0.5 0.5 1.5 2.5
演習:
5.1 #(シャープ)という動詞の二項動詞としての意味について、5#3のような表現を評価し、結果をみて意味を述べよ。またを評価し、意味を述べよ。
5#3 3 3 3 3 3 2# 1 2 3 1 1 2 2 3 3 (# # >./) b=: 2 7 1 8 2 8 8 8 8 8
答え:bの中の最大値を#b回コピーする
5.2 以下の表現を評価し、意味を述べてコメントと比較せよ
(+/ % #) b NB.リストbの平均 4 (# # +/ % #) b NB.bの平均をbの個数コピー 4 4 4 4 4 +/(##+/%#) b NB.上記の合計 20 (+/b)=+/(##+/%#) b NB.リストの合計=平均x個数 1 (*/b)= */(###%:*/) b NB.掛け算は幾何平均x個数 1
< |