As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。
已关闭8年。
在我的TODO中有新项目,无法选择F#或Nemerle。
我目前正在学习F#,并且在Nemerle上有一些项目。
我喜欢F#方式,我喜欢默认缩进(也希望nemerle2默认缩进),我喜欢F#的许多功能和魔力,但是没有宏。
F#的目标是VS2010,也许(也许)有更大的开发人员团队,它看起来像Haskell(可以用它创建轻量级Linux程序,这很有趣)。
Nemerle的目标是宏,我想我更喜欢Nemerle的某些语法。
大多数人都喜欢C#...
因此语言必须是透视图 语法必须合理,易于
理解,整齐,有力(少
代码) 它必须易于与.NET一起使用 所以我已经用
从这3个中选择。 除了可以选择其中一个之外,我都可以使用它们。对我来说不是那么容易。
例如,我喜欢(Nemerle)
然后(F#)
F# :
Nemerle:
F#(希望这里没有记错):
Nemerle:
C# :
这是nemerle代码,我已经无法转换为F#(所以我只能学习)...
与C#的比较:
显然,Nemerle代码更易于支持且更具可读性。
@Brian 所以这就是为什么我要问一下,告诉我在F#和C#上制作该轻松贴子是否真实,如果您看到我做错了,因为我不确定其他方法可以使它完全相同。 Nemerle定义类,而F#定义struct。 Nemerle定义只读成员,而F#定义可变成员。 Nemerle定义公共(public)属性,而F#定义公共(public)字段。 Nemerle定义了构造函数,而F#没有定义它。
F#示例的类似Nemerle代码如下:
第二个示例几乎相同:
Nemerle为My定义了构造函数,而F#没有定义它。 Nemerle定义属性,该属性返回在构造函数中传递的值,而F#定义具有常量值的属性。
Nemerle版本比F#版本更短,更清晰。
附言
关于花括号与缩进语法。
Nemerle支持两种语法。
您可以写:
或使用缩进:
甚至使用两种样式!
已关闭8年。
在我的TODO中有新项目,无法选择F#或Nemerle。
我目前正在学习F#,并且在Nemerle上有一些项目。
我喜欢F#方式,我喜欢默认缩进(也希望nemerle2默认缩进),我喜欢F#的许多功能和魔力,但是没有宏。
F#的目标是VS2010,也许(也许)有更大的开发人员团队,它看起来像Haskell(可以用它创建轻量级Linux程序,这很有趣)。
Nemerle的目标是宏,我想我更喜欢Nemerle的某些语法。
大多数人都喜欢C#...
理解,整齐,有力(少
代码)
从这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)
Nemerle:
["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
Nemerle:
[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#上制作该轻松贴子是否真实,如果您看到我做错了,因为我不确定其他方法可以使它完全相同。
最佳答案
F#和Nemerle版本完全不同:
F#示例的类似Nemerle代码如下:
struct X
mutable A : string
mutable B : string
第二个示例几乎相同:
Nemerle版本比F#版本更短,更清晰。
附言
关于花括号与缩进语法。
Nemerle支持两种语法。
您可以写:
class M
{
static Main() : void
{
Console.WriteLine("A");
}
}
或使用缩进:
#pragma indent
class M
static Main() : void
Console.WriteLine("A");
甚至使用两种样式!
#pragma indent
class M
static Main() : void { Console.WriteLine("A"); }
10-08 00:39