| Memoize | BasicWerk
						 
						EC Support
						 
						Technique
						 
						Facebook | 
| 20140717155341_factor_let_and_execute | 
| factor_let_and_execute   
 Factor で、レキシカルスコープを作る [| bindings | ... ] という構文ではクォーテーションをスタックに積む。 
 http://docs.factorcode.org/content/word-[__pipe__,locals.html 
 よって、実行するには call しなければいけない。 
 IN: scratchpad auto-use "aaa" [| str | str print ] --- Data stack: "aaa" [ 1 load-locals 0 get-local 1 drop-locals print ] ! ↑ "aaa" というリテラルとクォーテーションが積まれる。 ! call で print が実行される IN: scratchpad auto-use call aaa 
 これに対し、[let ... ] という parsing word を使った構文では、内部の処理は let を抜けた時点で即実行される(クォーテーション化されない)。 
 http://docs.factorcode.org/content/word-[let,locals.html 
 ! これだけで "aaa" が print される IN: scratchpad auto-use [let "aaa" :> str str print ] aaa 
 その他、[let の使い方参考。 
 
 
IN: scratchpad auto-use { "112" "Nakamura" "Shin" }
 
--- Data stack:
{ "112" "Nakamura" "Shin" }
 
IN: scratchpad auto-use 
[let :> row 
    "id:" row first 2array " " join print 
    row rest "name:" prefix " " join print 
] 
id: 112
name: Nakamura Shin
 
 
IN: scratchpad auto-use { "112" "Nakamura" "Shin" }
 
--- Data stack:
{ "112" "Nakamura" "Shin" }
 
IN: scratchpad auto-use 
[let :> row 
    row first :> id 
    row rest " " join :> name 
    "id: " write id print 
    "name: " write name print 
]
id: 112
name: Nakamura Shin
 
 | 
| © Shin Nakamura/BasicWerk 2014 |