レゴキチ/里々拡張案

ナビゲーション >> Top(FrontPage) > レゴキチ > 里々拡張案
  • 互換性を重視しない。
  • 汎用性を軽視する。
  • 既存機能を軽視しない。
  • わかりやすさを重視する。

※以下すべて妄想です。

bugyo/里々拡張案を読んで思ったこと。

結局whenって

(
	replace
	,(
		replace
		,(
			if
			,(条件式)
			,【処理1】
			,【処理2】
		)
		,】
		,(han2zen,))
	)
	,【
	,(han2zen,()
)

今まで↑のように書いていたのが、

(
	when
	,(条件式)
	,(処理1)
	,(処理2)
)

このように書けるようになったということ。 when単体は今まででもこういう対処策はあった。

確かに、if文ををネストするときには便利。

(
	replace
	,(
		replace
		,(
			if
			,(条件式1)
			,【
				replace
				,【
					replace
					,【
						if
						,(条件式2)
						,{処理A}
						,{処理B}
					】
					,}
					,【han2zen,)】
				】
				,{
				,【han2zen,(】
			】
			,【処理C】
		)
		,】
		,(han2zen,))
	)
	,【
	,(han2zen,()
)

「【】」「{}」と、カッコの抽象化を2種類も使っていたのを、

(
	when
	,(条件式1)
	,(
		when
		,(条件式2)
		,(処理A)
		,(処理B)
	)
	,(処理C)
)

こうスッキリと書けるようになった。

when、while、for。どれもずっと欲しかったものばかりでとても魅力的だ。timesは使い時がイマイチ分かりませんが・・・

しかし、そもそもsatori.dllにifやその他の機能は必要ないから、ssu.dllが作られたはず。

このままではssu.dllの存在価値が危ぶまれる。

satori.dllに新造すべき内部関数

そこで妥協案。

lambda

(lambda,[中身])

現在の階層の括弧内では展開されても中身は処理されない。ひとつ下位の階層で処理される。

なんとなく仮に名前を付けただけで、LISPのlambdaとは特に関係ない。もっと相応しい名前があるかも。

(
	if
	,(条件式1)
	,(lambda,(set,hoge,0))
	,(lambda,(set,hoge,1))
)

thru

(thru,[中身])

中身をそのまま返す。

(replace,[中身],あ,あ)

これで代用できなくもない。 そもそもこれはsatori.dllに実装する必要もない。ssu.dllでも十分かもしれない。

(thru,あ,あ)→あ,あ

上の二つで実現できるもの

when

(if,[条件式],(lambda,[処理1]),(lambda,[処理2]))

(
	if
	,(条件式1)
	,(lambda,(set,hoge,0))
	,(lambda,(set,hoge,1))
)

times

forと共用

while

(call,while,(lambda,[条件式]),(lambda,[処理]))

※さらに以下の単語群がセットになります。

@while
(A1)(
	(
		if
		,(A0)
		,while
		,nop、
	)
)

(set,n,1)(
	call,while
	,(lambda,(n)<=100)
	,(lambda
		,(
			iflist
			,0==
			,(n)%3+(n)%5
			,FizzBuzz
			,(n)%3
			,Fizz
			,(n)%5
			,Buzz
			,(n)
		)(set,n,(n)+1)
	)
)(set,n,)

for

(loop,thru、(lambda,[繰り返し処理]),[初期値],[終了値],[増加量])

※カウンタは繰り返し処理の中に自分で作ってください。

(set,n,1)(
	loop
	,thru#このthruが100個並んだ後、lambdaの中身が処理され、そして華麗にスルー。
		、(
			,lambda#このlambdaでloop内では展開されない
			,(
				iflist
				,0==
				,(n)%3+(n)%5
				,FizzBuzz
				,(n)%3
				,Fizz
				,(n)%5
				,Buzz
				,(n)
			)(set,n,(n)+1)
		)
	,1
	,100
)(set,n,)

意見とか


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

リロード   新規 編集 凍結 差分 ファイルUp コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ   ヘルプ
feed rss feed rdf feed rss20 feed lirs emily4 inside marble note
Last-modified: Fri, 13 Feb 2009 17:44:24 JST (3535d)