OCaml 中函数声明的语法

发布于 2024-11-26 01:36:15 字数 304 浏览 1 评论 0原文

我想定义一个函数如下:

let f (a: int) (b: int) (c: int) (d: int): int =
  ...

是否可以在不使它们成为元组的情况下使签名更短?因为我仍然希望 f 有 4 个参数。

非常感谢。

Edit1:我只是认为重复 int 4 次是没有用的,想象一下类似 let f (a, b, c, d: int): int 目前实际上是不允许的。

I would like to define a function as following:

let f (a: int) (b: int) (c: int) (d: int): int =
  ...

Is it possible to make the signature shorter without making them a tuple? As I still want f to have 4 arguments.

Thank you very much.

Edit1: I just think it is useless to repeat int 4 times, and image something like let f (a, b, c, d: int): int which actually is not allowed at the moment.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

独闯女儿国 2024-12-03 01:36:15

试试这个语法:

let g: int -> int -> int -> int -> int =
  fun a b c d -> 
     assert false

它并没有短多少,但是如果你有很多这样的语法,你可以定义 type arith4 = int ->;整数->整数->整数-> int 并使用该名称作为 g 的类型注释。

Try this syntax:

let g: int -> int -> int -> int -> int =
  fun a b c d -> 
     assert false

It's not much shorter, but if you have a lot of these, you can define type arith4 = int -> int -> int -> int -> int and use that name as type annotation for g.

幽蝶幻影 2024-12-03 01:36:15

我的 OCaml 很生疏,但我相信您可以通过声明自己的类型并将其解压到函数体中来做到这一点。

type four = int*int*int*int

let myfunction (t:four) = 
   let a, b, c, d = t in 
      a + b + c + d;

您还可以这样做:

let sum4 ((a, b, c, d):int*int*int*int) = 
   a + b + c + d;;

My OCaml is rusty but I believe you can do that by declaring your own type and by unpacking it in the function body.

type four = int*int*int*int

let myfunction (t:four) = 
   let a, b, c, d = t in 
      a + b + c + d;

You can also do this:

let sum4 ((a, b, c, d):int*int*int*int) = 
   a + b + c + d;;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文