Upgrade to Pro — share decks privately, control downloads, hide ads and more …

factor #RC

factor #RC

Livesense Inc.

August 08, 2012
Tweet

More Decks by Livesense Inc.

Other Decks in Technology

Transcript

  1. 連鎖性言語と適用型言語 • 引数を関数に適用することに よって評価が行われる • C、Ruby、PHP、Javascript、 Haskell、Java • 1つのデータのかたまりを操作 する関数を複数作成し、この

    データのかたまりが関数から関 数へと渡されることで評価が行 われる • 関数の合成は、複数のプログラ ムを連鎖させることによって記 述する • Forth、Joy、PostScript、Cat、 Factor 適用型 連鎖性
  2. ワード定義 : sq ( x -- ) dup * ;

    ① ② ③ ④ ⑤ ① 必ず「:」から始まる ② 新しいワードの名前 ③ スタック効果宣言(これが引数みたいなもん) ④ ワードの定義 ⑤ 「;」で終了
  3. 制御フロー クォーテーションとは評価可能なコードを含むオブジェクトのこと 2 2 + ! 4がスタックに積まれる [ 2 2

    + ] ! クォーテーションがスタックに積まれる : sign-test ( n -- ) dup 0 < [ drop "negative" ] [ zero? [ "zero" ] [ "positive" ] if ] if print ; 制御フローにクォーテーションが使われる
  4. Factorの特徴 var customer = ...; var orders = (customer ==

    null ? null : customer.orders); var order = (orders == null ? null : orders[0]); var price = (order == null ? null : price); dup [ orders>> ] when dup [ first ] when dup [ price>> ] when
  5. Factorの特徴 MACRO: maybe ( quots -- ) [ '[ dup

    _ when ] ] map [ ] join ; { [ orders>> ] [ first ] [ price>> ] } maybe