【Perl,Python,PHP】LL バトルロワイヤル 27【JS,Ruby】

このエントリーをはてなブックマークに追加
300デフォルトの名無しさん
>>229を、またまたアップデート
 http://play.island.ac/codepaste/code?id=27

主な変更点:
・データ型として配列をサポートし、その操作ワードもいくつか追加しました
  [1 2 3] ary-length ==> 3 # 配列の長さ
  [[:a :b] [:c :d]] ary-concat ==> [:a :b :c :d] # 配列の連結
・ワードの塊を無名手続きであるブロックで表現できるようになりました
  [1 2 3] { 10 * } ary-map ==> [10 20 30] # 配列上の写像
・ブロックをワード ! (>>196)を使って記号と束縛することで、手続きを定義できます
  { :x ! :y ! x y x y > cond } :max ! # 手続き max を定義
  1 3 max ==> 3 # (他の組み込みワードと同様に)ユーザ定義ワード max もコールできる
 ただし、手続きは再帰的に定義できないので、計算体系としては不完全です

なお、規模が1Kstepを超えて全体の把握がしづらくなってきたので、文書化してみました
 http://www.h6.dion.ne.jp/~machan/tmdoc/example/RPN.book/html/