関数定義

functionとfuncとdoesがあります。

 >> sign: function [x][r][either x > 0 [r: +1][either x < 0 [r: -1][r: 0] ] r] ; rがローカル変数
 >> sign +100
 == 1
 >> sign -100
 == -1
 >> sign 0
 == 0
 >> sign2: func [x][either x > 0 [+1][either x < 0 [-1][0] ] ] ; 最後の値が返される
 >> sign2 +123
 == 1
 >> sign2 -9999
 == -1
 >> sign2 0
 == 0
 >> new-line: does [print ""] ; 引数もローカル変数も無し
 >> print "A" new-line print "B"
 A
 
 B

名前の解決は「データを実行している」ので当然動的スコープかと思いきや。

 >> px: does [print x]
 >> test: function [][x][x: 20 px]
 >> x: 10 test
 10
 >> x: 20 px
 20

レキシカルスコープ!?
どうやらコンテキストが定義された時点でスコープが結び付けられるようで、マニュアルはdefinitionalスコープと呼んでいました。