5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

: Mops ( オブジェクト指向FORTH -- ) ;

1 : 1:01/09/10 19:41
ニッチ(Mac)の中のニッチ(FORTH)。
オブジェクト指向FORTH言語、Mopsについて語るスレ。
いや、語れるのか‥‥?

213 :デフォルトの名無しさん:02/02/23 03:38
↓似非map?ぽいものを定義してみた。

0 value SavedDepth
: (( depth -> SavedDepth ;
: )) depth SavedDepth - ;
: map ( P1...Pn n xt -- Q1...Qn n )
  over >r >r
  BEGIN dup 0 > WHILE swap r@ execute r> r> rot >r >r >r 1 -
  REPEAT
  drop r> drop r@
  BEGIN dup 0 > WHILE r> r> -rot >r 1 - REPEAT
  drop r> ;



214 :213:02/02/23 03:38
使い方
・スタック上に一次元配列を作る。

 (( 1 2 3 4 5 ))

 各要素の後に要素の数をスタックに積んだ状態になる。
 上の例だとスタックの状態は: 1 2 3 4 5 5

・配列の要素一つに対する操作用ワードを定義する。

 : e++ 1 + ;

 ↑上のe++はスタックトップの値を1だけ加算して返す。

 (( 1 2 3 4 5 )) ['] e++ map とすると、
 (( 2 3 4 5 6 )) がスタックに返る。

 : countUp ['] e++ map ;

 と定義すれば、 (( 1 3 5 7 )) countUp で、
 (( 2 4 6 8 )) がスタックに返る。



97 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)