Memoize

BasicWerk   EC Support   Technique   Facebook  

20140609210202_factor_memo

factor_memo

 

auto-use

自動的に必要なライブラリを読み込む。

 
IN: scratchpad auto-use
IN: scratchpad auto-use 10 '[ 10 sq _ / ] call .
1: Note:
Added "fry" vocabulary to search path
10
 

 

http://docs.factorcode.org/content/word-auto-use,parser.html

 

 

Word の定義を参照する

\ と see を組み合わせる。

 
IN: scratchpad auto-use \ sq see
USING: kernel ;
IN: math
: sq ( x -- y ) dup * ; inline
 

 

http://docs.factorcode.org/content/word-see,see.html

 

 

Stack の中を見るだけ

Stack の中をいじらずに見るだけなら .s を使う。

 
IN: scratchpad auto-use 1 2 3
 
--- Data stack:
1
2
3
IN: scratchpad auto-use .s
1
2
3
 

 

 

if

if は TOS の真偽を評価してクォーテーションを評価する。

TOS は消費される。

また、f 以外は t である。

空のクォーテーションや空の配列に至っても t である。

 
IN: scratchpad auto-use 1 [ "T" ] [ "F" ] if print
T
IN: scratchpad auto-use 0 [ "T" ] [ "F" ] if print
T
IN: scratchpad auto-use -1 [ "T" ] [ "F" ] if print
T
IN: scratchpad auto-use "" [ "T" ] [ "F" ] if print
T
IN: scratchpad auto-use [ ] [ "T" ] [ "F" ] if print
T
IN: scratchpad auto-use { } [ "T" ] [ "F" ] if print
T
IN: scratchpad auto-use t [ "T" ] [ "F" ] if print
T
IN: scratchpad auto-use f [ "T" ] [ "F" ] if print
F
 

 

 

times

TOS の数値を回数としてクォーテーションを繰り返し評価する。

 
IN: scratchpad auto-use 3 [ "I might be wrong." print ] times
I might be wrong.
I might be wrong.
I might be wrong.
 

 

 

each

配列の各要素に対して処理を実行したいときは each を使う。

 

each は配列の各要素を push する動作を伴う。

 
IN: scratchpad auto-use { 1 2 3 } [ ] each
 
--- Data stack:
1
2
3
 
IN: scratchpad auto-use clear
 
IN: scratchpad auto-use 10 { 1 2 3 } [ over swap - . ] each
9
8
7
 
--- Data stack:
10
 

 

 

map

map はクォーテーションを適用した配列を push する。

 
IN: scratchpad auto-use { 1 2 3 } [ sq ] map .
{ 1 4 9 }
 

 

 

filter

filter は配列をクォーテーションでフィルターする。

 
IN: scratchpad auto-use { 0 1 2 } [ zero? not ] filter .
{ 1 2 }
 

 

http://oss.infoscience.co.jp/factor/docs.factorcode.org/content/article-cookbook-combinators.html

 

 

シンボルのダイナミックスコープ

SYMBOL: で宣言したシンボルはダイナミックスコープを持つ。

wirh-scope はスコープを局所化する。

 
IN: scratchpad auto-use SYMBOL: foo
IN: scratchpad auto-use "outer" foo set [ "inner" foo set foo get print ] with-scope foo get print
inner
outer
 

 

http://oss.infoscience.co.jp/factor/docs.factorcode.org/content/article-cookbook-variables.html

 


© Shin Nakamura/BasicWerk 2014