目次
概要
変更点(主に1から2への変更)
軽く利用してみた
概要
MiniScriptの次期バージョン・MiniScript2の最終候補バージョンが公開されてます。
https://github.com/JoeStrout/miniscript2/releases/tag/v2.0-fc1
https://github.com/JoeStrout/miniscript2/blob/main/docs/NewInMS2.pdf
機能を記載してみるけど、あくまで私見なので参考程度に見てね。
試しに動かしてみたレポートも別途書く予定です。
変更点(主に1から2への変更)
まず資料
https://github.com/JoeStrout/miniscript2/blob/main/notes/LANGUAGE_CHANGES.md
1個目:乗算の計算の順番が変更になった。
MS1は前から乗算していくんだけど、他の言語は後ろから順番に積み上げていく方式とのこと。
よって、それに合わせる形で後ろから(右側の数値から)乗算していく形式に変更された。
2個目:数値リテラルの点構文
つまり「4.foo」「3.14.foo」みたいな書き方を許すとのこと。
3個目:フリーズ構文
https://github.com/JoeStrout/miniscript2/blob/main/notes/FROZEN_VALUES.md
C言語でいうconstのような値を動的に定義することができる機能のよう。
勝手に更新されたくない場合は便利かもしれない。
4個目:関数式
end function outerってキーワードが追加されたみたいだけど、関数への参照を得るみたい。どういう効果かは具体的には不明。
5個目:mapの反復順序
MiniScriptの仕様としてmapは順序が定義されていない。ただ、C#はDictionaryクラスを利用している関係上挿入時にキーを返していたため、C++版も同じようにするとのこと。
6番目:文字列のインデックス付け
どうもC#版とC++版ではインデックス付の方法が異なっていた(C++がUTF-8、C#がUTF-16)ため、それが統一されたということみたい。
7番目:エラー型の追加
ランタイムエラーの出力を特定の型で受け取ることができる。これはだいぶ助かるのではと思った。今までは数値型で確認するとかだったし。
8番目:プロパティセッター
主にクラスを使うときに影響するみたいで、変数アクセスの際にアクセスできるメソッドを選定できる感じ、かなあ。
ちょっと使ってみないとわからない。
あとパフォーマンスにも影響があるので使い込む場合影響ありそう。
最後にキーワード情報
info(x):フリーズ済みの値を返す(3番目)
funcRef:無名関数lambdaみたいな使い方になりそう(4番目)
listの内部の処理方法が変わったみたい。ちょっと内容わからんので調べてみる
mapにfrozenというプロパティが追加された(3番目)
errorにmessage/inner/stack/isaプロパティが追加された。(7番目)
軽く利用してみた
超遅いフィボナッチ関数について起動してみたところ・・・まったく返ってこない内容が60秒で返ってきた!w
今までの文法は基本的に使えるのと、全体的に高速化されているのでかなり快適になっていると思う。
とはいうもののやはり遅いケースは存在するのでそういうのは避ける必要がある。
個人的にはエラー型が存在するのとフリーズ変数の存在が大きいかなあと思った。