EssenMemo0003
の編集
https://khfdpl.osask.jp:443/wiki/?EssenMemo0003
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2016_10
2016_11
2016_12
BracketName
Essen
Essen0
Essen1
Essen2
Essen3
Essen4
EssenMemo0001
EssenMemo0002
EssenMemo0003
EssenMemo0004
EssenMemo0005
EssenMemo0006
EssenMemo0007
EssenMemo0008
EssenMemo0009
EssenMemo0010
EssenMemo0011
EssenR2
EssenR2_ess03f
EssenR2_ess03h
EssenR2_ess03i
EssenR2_ideas
EssenR2_jit00
EssenR2_jit01
FormattingRules
FrontPage
Help
IP
InterWiki
InterWikiName
InterWikiSandBox
K
KHPC
KHPC_v000doc01
KHPC_v001doc01
KHPC_v002doc01
KHPC_v003doc01
MenuBar
OSC
OSC20181027
OSC20190222
OSC20191123
OSC20230401
OSC20230528
OSC20231021
OSC20240310
OSC20241026
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
SltVA
VariableArray
WikiEngines
WikiName
YukiWiki
advcal20161205
advcal20161206
advcal20161209
advcal20161210
advcal20161215
eoml0001
eoml0002
essen_ex01_0001
impressions
kcl_malloc
khfdpl_result1
members
memo0001
memo0002
note0001
note0002
note0003
note0004
note0005
note0006
oldworks
oldworks00
oldworks06
oldworks12
oldworks13
osaskjp_index
persistent_C
populars
pr20161105
pr20161105b
scsc
seccamp2017
spam_test
uxf
uxf_01
uxf_02
uxp
* Essenの開発メモ#0003 -(by [[K]], 2017.05.01) ** 基本的な文法・機能(案) -LISPにはしたくない --まずLISPは素晴らしい言語である。シンプルな構文だけで構成されているのに、一通りのことは全部できる。というか他の言語よりもいろんなことがうまくできる。 --しかし、LISPは読みにくい。かっこが多すぎる。私にとっては直感的ではない。だからLISPに近い機能を持ちつつ、でもC言語に近い記法を持つような、そんな言語にしたい。 --いうなれば「受け入れ可能なLISP」を目指す。 --Rubyも似たような発想に基づいていると聞いたことがある。 -代入は普通にイコールで a = 1 -計算は普通に書く b = a * 2 + 1 -配列はこんな風に書きたい c = [1 2 3 4] d = (1 2 3 4) // 角かっこではなく、丸かっこでもよい -配列の要素へのアクセスはC言語みたいに角かっこを使う e = c[2] // c(2) でもよい -中かっこは文字列になる(文脈情報も内部では持っていて、それを使って変数スコープを解決する) f = { a = b - 1 } --ただの文字列になるので、ifやwhileの { } はただの文字列を渡していることになる。ifやwhileは実は関数になっていて、渡された文字列をevalで実行するかどうかを決めている。 -構造体は配列の値の前にメンバ名を書く。 g = [abc:123 def:456 name:"kawai"] --これでg.abcは123になるし、g.defは456になるし、g.nameは"kawai"になる。 --g["abc"]というようにしてアクセスすることもできる。 -配列をコピーした場合、完全なdeep-copyになる。C言語では配列名はポインタを意味するが、Essenでは配列名は配列の全内容を意味する。 c = [1 2 3 4] h = c // このあとでcを上書きしたり消したりしてもhには全く影響しない -配列同士を比較したとき、完全なdeep-compareになる。つまり中身まで完全に同一であるかどうかをチェックする。少しでも違うところがあれば等しくない。だから内容が一致しているかどうかをチェックするのは非常に簡単である。 -Essenではすべてのオブジェクトに何らかの大小関係を定義する。同じ型同士なら、比較結果は一般に期待されているものと同じになる。違う型なら型の序列に応じて決まる。配列オブジェクトと同士を比較することもできるし、構造体オブジェクトを比較することもできる。 --これは大小関係そのものに意味があるかないかというよりも、とにかくすべてのオブジェクトを比較可能にしてソートできるようにすることで、いろいろと便利なケースがあるのではないかというアイデアに由来する。 -a[0] = 1 a[1] = 3 a[2] = 7 みたいなとき、a[i]が最大となるiを求められるようにしたい。またa[i]=3となるiを求められるようにしたい。つまり逆引きができるようにしたい。機能は簡単にできる。ただこれをどのような記法であらわせばよいか、まだアイデアがない。 -以前は a[0]=1 a[1]=2 b[1]=2 b[0]=1 -のときに、aとbを異なるものとして扱おうと思っていた(つまり代入順序が違うと違うものとみなされた)。しかしそれは便利そうじゃないのでやめた(まあ当たり前だけど)。だから現在の案では、代入順序は関係なく、すべてのメンバが同じ値であれば等しいとする。 --代入順序に関する情報はインデックスでソートすることによりすぐに失われる。 //記号と英数字(パース規則) * こめんと欄 #comment
タイムスタンプを変更しない
* Essenの開発メモ#0003 -(by [[K]], 2017.05.01) ** 基本的な文法・機能(案) -LISPにはしたくない --まずLISPは素晴らしい言語である。シンプルな構文だけで構成されているのに、一通りのことは全部できる。というか他の言語よりもいろんなことがうまくできる。 --しかし、LISPは読みにくい。かっこが多すぎる。私にとっては直感的ではない。だからLISPに近い機能を持ちつつ、でもC言語に近い記法を持つような、そんな言語にしたい。 --いうなれば「受け入れ可能なLISP」を目指す。 --Rubyも似たような発想に基づいていると聞いたことがある。 -代入は普通にイコールで a = 1 -計算は普通に書く b = a * 2 + 1 -配列はこんな風に書きたい c = [1 2 3 4] d = (1 2 3 4) // 角かっこではなく、丸かっこでもよい -配列の要素へのアクセスはC言語みたいに角かっこを使う e = c[2] // c(2) でもよい -中かっこは文字列になる(文脈情報も内部では持っていて、それを使って変数スコープを解決する) f = { a = b - 1 } --ただの文字列になるので、ifやwhileの { } はただの文字列を渡していることになる。ifやwhileは実は関数になっていて、渡された文字列をevalで実行するかどうかを決めている。 -構造体は配列の値の前にメンバ名を書く。 g = [abc:123 def:456 name:"kawai"] --これでg.abcは123になるし、g.defは456になるし、g.nameは"kawai"になる。 --g["abc"]というようにしてアクセスすることもできる。 -配列をコピーした場合、完全なdeep-copyになる。C言語では配列名はポインタを意味するが、Essenでは配列名は配列の全内容を意味する。 c = [1 2 3 4] h = c // このあとでcを上書きしたり消したりしてもhには全く影響しない -配列同士を比較したとき、完全なdeep-compareになる。つまり中身まで完全に同一であるかどうかをチェックする。少しでも違うところがあれば等しくない。だから内容が一致しているかどうかをチェックするのは非常に簡単である。 -Essenではすべてのオブジェクトに何らかの大小関係を定義する。同じ型同士なら、比較結果は一般に期待されているものと同じになる。違う型なら型の序列に応じて決まる。配列オブジェクトと同士を比較することもできるし、構造体オブジェクトを比較することもできる。 --これは大小関係そのものに意味があるかないかというよりも、とにかくすべてのオブジェクトを比較可能にしてソートできるようにすることで、いろいろと便利なケースがあるのではないかというアイデアに由来する。 -a[0] = 1 a[1] = 3 a[2] = 7 みたいなとき、a[i]が最大となるiを求められるようにしたい。またa[i]=3となるiを求められるようにしたい。つまり逆引きができるようにしたい。機能は簡単にできる。ただこれをどのような記法であらわせばよいか、まだアイデアがない。 -以前は a[0]=1 a[1]=2 b[1]=2 b[0]=1 -のときに、aとbを異なるものとして扱おうと思っていた(つまり代入順序が違うと違うものとみなされた)。しかしそれは便利そうじゃないのでやめた(まあ当たり前だけど)。だから現在の案では、代入順序は関係なく、すべてのメンバが同じ値であれば等しいとする。 --代入順序に関する情報はインデックスでソートすることによりすぐに失われる。 //記号と英数字(パース規則) * こめんと欄 #comment
テキスト整形のルールを表示する