理想の静的型付き言語(2)

 さて、Swiftの構文に触発されて静的型付き言語の構文を考えてみる。基本、Swift+Ruby。Sapphireとでも名付けてみようか。

  • データ型はSwift
  • 制御構文はSwift、ただしif 修飾節は欲しい。
  • 例外構文はRubyがいいと思う、rescueを。
  • structとclassの違いは、確かにあってもいい。Flyweightパターンと合わせてそこを支援できれば。アノテーションレベルでもいいのかもしれないが。
  • 静的型付き言語にenumは必須。でも、Swiftを進めると、classに同じ役割を持たせていいような気もする。プロトタイプの扱い、factoryパターンとしても重要。
  • 外部変数名も
  • 整数値と浮動小数点の演算くらいは、明示的にキャストなしで
  • 数学的な、対pair(順序対)と集合Setを明示的に区別したい。対()集合は{}
  • クロージャHaskell流で内包表記っぽくしたい。
  • 範囲演算も開閉あるといいのかな。
  • 遅延評価とプロパティオブザーバーは、別の仕組みにしてもよさそう。
  1. hashのキーに”id"と文字列を使うより、'idでシンボル化はどうか。idでは変数になるし、:idだと型指定と区別がつかないので
  2. JSON形式のことも考えると、hashのキーに:をつかうのはさけた方がいいと思う
  3. 配列へのアクセスは、array_iで _iで添字化はどうか。複数の場合は、_i,jとカンマも許す。ただしスペースは許さない。もちろん従来通りarray[i]でもよい。
  4. クロージャは、{x| ... } と in は使いたくない。二変数{x,y| ...}、ペア順序対は{(x,y)|...} 多重代入ができれば可能な気がするが。
  5. パターンマッチも同じ仕組みでできそうな気もする。ツリー構造から、特定の深さの要素だけを取り出す、など。
  6. 構造をもった文字列からうまくデータ構造を作り出せると、いいかもしれない。文字列ベースでパターンマッチすればいいのかな。
  7. Swiftはどのオブジェクトにもdescriptionプロパティを定義しておけば、その値でprintの出力にしてくれるのね。これはいいかも。

そんなこんな。