探しているもの
Kotlin や C# などの静的型付け言語、もしくは Python や PHP などの型を書いても書かなくても良い言語で、
型を書く場所が分かれている(独立している)言語はありますか?
これらの言語では関数定義の間に型情報を挟む形で記述するかと思います。
Python の例:
py
1def add(num1: int, num2: int) -> int: 2 return num1 + num2
C# の例:
c#
1int Add(int num1, int num2) 2{ 3 return num1 + num2; 4}
そうではなく、型定義だけを別に書ける言語を探しています。
これまで私が見つけたものでは、 Haskell を元にした JavaScript Framework の Elm という言語はそうなっていました。
elm
1update : Msg -> Model -> Model 2update msg model = 3 case msg of 4 Increment -> 5 { model | count = model.count + 1 } 6 7 Decrement -> 8 { model | count = model.count - 1 }
上記の 1 行目が型定義部分で、 2 行目以降が処理の本体となっていて分かれています。
このように型定義部分が分かれている言語は何がありますでしょうか?
探している理由
探している理由としては、分かれている方が見やすいと考えているからです。
上記に上げたほどシンプルな例であればどちらも大差はないと思います。
しかし、実用するくらいに複雑になると型定義が複雑になり、とても読みづらいものとなります。
多くの場合、読みたいのは処理であり、型定義は不要です。
そのため、複雑な型定義が挟まってくると邪魔なものが多く読みづらくなります。
上記のような関数定義で言えば、どれがパラメータの名前であるのかもパット見では判断できなくなります。
型定義が存在しない JavaScript などを見ると処理のみが書かれていてすごくスッキリとして読みやすいです。
しかしながら、何をしているか読むだけではなく、機能の追加や修正をしようとすると、型情報が全くないというのは不都合も多く、型定義を書けない言語にすれば良いというわけでもないです。
そこで自分が最も見やすいのは何かと考えると、型定義が独立、せめて別の行にあることだと思いました。
しかし、メジャーどころをいくつかみたものの、 C 言語に引っ張られているものが多いのか、構文のパースの都合なのか、型定義を間に挟むものが多いです。
Elm ではだめな理由
上記の通り、 Elm は条件を満たしています。
しかし、 JavaScript Framework なため、 Python などのようにいろいろなところで使える言語とは異なります。
Elm の元になった Haskell であれば、可能ではあると思うのですが、言語として難しく、やはり Python などのように気軽に使えるものではないです。
もう少し扱いやすい言語でそういったものがないかを探しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/24 04:38
退会済みユーザー
2020/09/24 06:00
2020/09/24 06:40
退会済みユーザー
2020/09/24 07:37