有可能让Moonbit的函数天然支持柯里化么?

例如:

// f :: Int -> Int -> Int
fn f(a:Int) -> Int -> Int{
  a
}

let g = f(0) // g :: Int -> Int
println(g(1)) // output:0

这样的好处是可以便捷地产出各种函数进行组合,让程序的书写更加灵活。就像是Haskell那样。
:eyes:只是询问一下这样子可不可行。希望不会打扰到你们。我个人挺喜欢Moonbit这个项目的。

目前我们没有直接支持Curry的语法。但你可以这样

fn make_adder(n: Int) -> (Int) -> Int {
  fn (x) {
    return x + n
  }
}

fn init {
  let adder = make_adder(1)
  println(adder(0))
}


1 个赞

请问未来有添加类似语法的计划吗?:eyes:

我们目前的态度是倾向于不添加,柯里化对代码可读性的影响比较大。但不排除未来改变想法的可能

2 个赞

好的,感谢您的回复。