我的输入数字是int类型的。但输入数字必须在-2055到2055的范围内,并且我想通过使用正则表达式来检查这一点。 所以有没有办法编写正则表达式来检查数字是否在(-2055, 2055)范围内? 使用if语句检查数字是否在范围内更容易。但我正在编写解释器,所以应该使用正则表达式检查输入数字。
如何确定一个给定的模式是否“好”,即它是否是穷尽和非重叠的,适用于 ML 风格的编程语言?假设你有以下类型的模式:match lst with x :: y :: [] -> ... [] -> ... 或者:match lst with x :: xs -> ....
我在查看一个OCaml源文件,其开头包含以下指令:open! MiscParser 我知道open MiscParser的意思是“打开MiscParser模块”,但我不知道感叹号代表什么。
近期,Facebook宣布推出Flow,这是一个用于JavaScript的静态类型检查器,主要由OCaml实现(https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-javascr...
我经常听说 F# 不支持 OCaml 行类型,这使得 OCaml 比 F# 更加强大。 它们是什么?它们是代数数据类型,例如和类型(discriminated unions)或积类型(元组,记录)吗?在其他方言中,比如 F# 中是否可以编写行类型?
我有一个类型为tree的定义如下:type 'a tree = Leaf of 'a | Node of 'a * 'a tree * 'a tree ;; 我有一个用于查找树深度的函数如下:let rec depth = function | Leaf x -> 0 ...
我想创建一个从1到n的整数列表。在Python中,我可以使用range(1, n+1)来实现,在Haskell中可以使用:take n (iterate (1+) 1)。 在OCaml中,正确的做法是什么?
在OCaml中,我们有两种类型的等价比较方式: x = y 和 x == y, 那么它们之间有什么不同呢? 在OCaml中,x = y 是否就像Java中的x.equals(y)一样? 而x == y 是否就像Java中的x == y(比较地址)一样?