我们在定义咖喱式函数时可以声明参数的类型吗?

时间:2013-10-23 13:32:19

标签: sml

如果我使用元组样式参数定义函数,我可以定义参数类型和返回类型:

fun hello(name:String, code:int):String = "hello!"

但如果我使用咖喱式,我只能这样做:

fun hello name code = "hello!"

是否可以为后者添加参数类型或返回类型?

2 个答案:

答案 0 :(得分:7)

确实有可能:

fun hello (name : string) (code : int) : string = "hello!"

但是,标准ML中很少需要或使用类型注释,因此最常省略它们。

答案 1 :(得分:5)

如果函数没有curry,另一种方法是指定完整的函数类型,la Haskell,

val hello : string * int -> string = 
  fn (name, code) => "hello!"

您也可以使用递归函数执行此操作

val rec hello : string * int -> string = 
  fn (name, code) => hello ("hello!", 5)

虽然类型描述仍然更好,但未发现的函数有点麻烦。

val hello : name -> int -> string = 
  fn name => fn code => "hello!"