レゴキチ/里々拡張案
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
-互換性を重視しない。
-汎用性を軽視する。
-既存機能を軽視しない。
-わかりやすさを重視する。
※以下すべて妄想です。
*[[bugyo/里々拡張案]]を読んで思ったこと。 [#yca647bd]
結局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。どれもずっと欲しかったものばかりでとて...
しかし、そもそもsatori.dllにifやその他の機能は必要ないか...
このままではssu.dllの存在価値が危ぶまれる。
*satori.dllに新造すべき内部関数 [#bca763a8]
そこで妥協案。
**lambda [#c8b554c6]
(lambda,[中身])
現在の階層の括弧内では展開されても中身は処理されない。ひ...
なんとなく仮に名前を付けただけで、LISPのlambdaとは特に関...
***例 [#tb431b5b]
(
if
,(条件式1)
,(lambda,(set,hoge,0))
,(lambda,(set,hoge,1))
)
**thru [#u0fe881f]
(thru,[中身])
中身をそのまま返す。
(replace,[中身],あ,あ)
これで代用できなくもない。
そもそもこれはsatori.dllに実装する必要もない。ssu.dllでも...
***例 [#j9786624]
(thru,あ,あ)→あ,あ
*上の二つで実現できるもの [#p4529b79]
**when [#l30c98f0]
(if,[条件式],(lambda,[処理1]),(lambda,[処理2]))
***例 [#aa7fea3e]
(
if
,(条件式1)
,(lambda,(set,hoge,0))
,(lambda,(set,hoge,1))
)
**times [#v5c2db62]
forと共用
**while [#v0d73e55]
(call,while,(lambda,[条件式]),(lambda,[処理]))
※さらに以下の単語群がセットになります。
@while
(A1)(
(
if
,(A0)
,while
,nop、
)
)
***例 [#ua75dd50]
(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 [#od886d57]
(loop,thru、(lambda,[繰り返し処理]),[初期値],[終了値]...
※カウンタは繰り返し処理の中に自分で作ってください。
***例 [#tba7b333]
(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,)
*意見とか [#oddc925d]
#comment
終了行:
-互換性を重視しない。
-汎用性を軽視する。
-既存機能を軽視しない。
-わかりやすさを重視する。
※以下すべて妄想です。
*[[bugyo/里々拡張案]]を読んで思ったこと。 [#yca647bd]
結局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。どれもずっと欲しかったものばかりでとて...
しかし、そもそもsatori.dllにifやその他の機能は必要ないか...
このままではssu.dllの存在価値が危ぶまれる。
*satori.dllに新造すべき内部関数 [#bca763a8]
そこで妥協案。
**lambda [#c8b554c6]
(lambda,[中身])
現在の階層の括弧内では展開されても中身は処理されない。ひ...
なんとなく仮に名前を付けただけで、LISPのlambdaとは特に関...
***例 [#tb431b5b]
(
if
,(条件式1)
,(lambda,(set,hoge,0))
,(lambda,(set,hoge,1))
)
**thru [#u0fe881f]
(thru,[中身])
中身をそのまま返す。
(replace,[中身],あ,あ)
これで代用できなくもない。
そもそもこれはsatori.dllに実装する必要もない。ssu.dllでも...
***例 [#j9786624]
(thru,あ,あ)→あ,あ
*上の二つで実現できるもの [#p4529b79]
**when [#l30c98f0]
(if,[条件式],(lambda,[処理1]),(lambda,[処理2]))
***例 [#aa7fea3e]
(
if
,(条件式1)
,(lambda,(set,hoge,0))
,(lambda,(set,hoge,1))
)
**times [#v5c2db62]
forと共用
**while [#v0d73e55]
(call,while,(lambda,[条件式]),(lambda,[処理]))
※さらに以下の単語群がセットになります。
@while
(A1)(
(
if
,(A0)
,while
,nop、
)
)
***例 [#ua75dd50]
(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 [#od886d57]
(loop,thru、(lambda,[繰り返し処理]),[初期値],[終了値]...
※カウンタは繰り返し処理の中に自分で作ってください。
***例 [#tba7b333]
(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,)
*意見とか [#oddc925d]
#comment
ページ名: