gpt4 book ai didi

c# - F# vs C# vs Nemerle

转载 作者:IT王子 更新时间:2023-10-29 04:05:01 25 4
gpt4 key购买 nike

<分区>

我的 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;
}
}

这里是 nemerle 代码,我已经无法转换为 F#(所以我只是在学习它)......

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# 和 C# 上简化此操作,因为我不确定其他方法使明显相同。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com