We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
少し言語のデザインが気になります。
return
if
print(if (1) { 1;} else { 2; });
let a = 1; print(a=1)
言語のデザインが統一されていないと、なかなかnub言語自体を理解するのがむつかしいので統一出来たらなぁと思います。
The text was updated successfully, but these errors were encountered:
nubは式志向の言語デザインだと思っていたのですが、 return式(でいいのでしょうか?)があります。
あとで式指向にした方がいいよなあと思って、結果としてreturnが残っているみたいな感じですが、returnを最初から入れる意味ないし、削除でも良さそうです(やりたい人はそれこそハンズオン中に拡張してもらうとして)
READMEに書いてないのですが、ifは式のように思えます。 しかし構文ではprint(if (1) { 1;} else { 2; });のようにパーサーの都合で書けないようです。
はい。おっしゃる通りです。一方で、
def f(x) { if(x) { 1; } else { 2; } }
のように関数内トップレベルだとifを値を返すように使うことができて、割とテキトーなデザインをしたツケが回っている気がします。パーザーで print(if (1) { 1; } else {2: }) のように書けるようにするのは多少パーザ改変すればできるといえばできるのですが、構文定義がわかりにくくなるのでトレードオフだなーと思っています。楽な改変としては、ifは常に末尾にセミコロンを入れなければいけないとかですが、やや微妙です。
print(if (1) { 1; } else {2: })
ともあれ、ちょっと考えが足りなかったと思うので別のIssueで設計を再整理させてください。
Sorry, something went wrong.
No branches or pull requests
少し言語のデザインが気になります。
return
式(でいいのでしょうか?)があります。式を評価するとそれが返るので不要な気がして、min-camlなどとくらべてなんだか全体の整合性が取れていないように思います。
if
は式のように思えます。しかし構文では
print(if (1) { 1;} else { 2; });
のようにパーサーの都合で書けないようです。いっそのこと宣言にしたほうが色々楽になるのではないかと思います。
一方代入は
let a = 1; print(a=1)
は許されます。言語のデザインが統一されていないと、なかなかnub言語自体を理解するのがむつかしいので統一出来たらなぁと思います。
The text was updated successfully, but these errors were encountered: