TODO で新しいプロジェクトを取得しましたが、F# または Nemerle を選択できません。
私は現在 F# を学んでおり、Nemerle に関するプロジェクトをいくつか持っています。
私は F# のやり方が好きです。デフォルトでインデントが好きです (nemerle2 のデフォルトでインデントも必要です)。F# の多くの機能と魔法が好きですが、マクロはありません。
F# の目標は VS2010 であり、おそらく (おそらく) より大きな開発者チームであり、Haskell のように見えます (それで軽い Linux プログラムを作成でき、楽しいです)。
Nemerle の目標はマクロであり、私は Nemerle のいくつかの構文がより好きだと思います。
ほとんどの人はC#が好きです...
- だから言語は遠近法でなければならない
- 構文は論理的で、理解しやすく、きちんとしていて強力でなければなりません(コードが少ない)
- .NET で簡単に使用できる必要があります
- だから私はすでにこの3つのうちの選択で自分自身を閉じました.
- 私はそれらすべてを使用できますが、選択したものはどうですか。それは私にとってそれほど簡単ではありません。
たとえば、私は好きです (Nemerle)
match(STT)
| 1 with st= "Summ"
| 2 with st= "AVG" =>
$"$st : $(summbycol(counter,STT))"
もっともっと (F#)
let (|Let|) v e = (v, e)
match stt with
| Let "Summ" (st, 1)
| Let "AVG" (st, 2) -> srintf "%s ..." st
F# :
["A"; "B"] |> List.iter (fun s -> printfn "%d" s.Length)
ネメル:
["A", "B"].Iter(x => printf("%d", x.Length))
F# (ここで間違っていないことを願っています):
let type X =
let mytable a = ""
let mytable b = ""
new(A, B) = {
a <- A
b <- B }
member X.A
with get = a
member X.B
with get = a
ネメルレ :
[Record]
class X
public A : string { get; }
public B : string { get; }
C#:
class X
{
private readonly string _a;
public string A { get { return _a; } }
private readonly string _b;
public string B { get { return _b; } }
public X(string a, string b)
{
_a = a;
_b = b;
}
}
そして、これは私がすでにF#に変換できないnemerleコードです(だから私はそれを学んでいるだけです)...
abstract class ABase
abstract public A : string { get; }
interface IB
B : string { get; }
[Record]
class My : ABase, IB
public override A : string { get; }
public virtual B : string { get; }
C# との比較:
abstract class ABase
{
abstract public string A { get; }
}
interface IB
{
string B { get; }
}
class My : ABase, IB
{
private readonly string _a;
public override A : string { get { return _a; } }
private readonly string _b;
public virtual B : string { get { return _b; } }
public My(string a, string b)
{
_a = a;
_b = b;
}
}
Nemerle コードの方がサポートしやすく、読みやすいことは明らかです。
@Brianそれが私が尋ねている理由です.F#でこのイーザーを作成することが本当かどうかを教えてください。