小编jam*_*tjw的帖子

为什么 OCaml 认为该函数采用 int 参数,而没有任何迹象表明应该如此?

我正在研究 Andrew Appel 撰写的《ML 中的现代编译器实现》的第 1 章,我决定用 OCaml 而不是 SML 来实现它。我是 OCaml 新手,遇到了一个非常令人沮丧的问题。OCaml 似乎认为下面的函数具有签名int * (int * 'a) -> 'a option

let rec lookupTable = function
  | name, (i, v) :: _ when name = i -> Some v
  | name, (_, _) :: rest -> lookupTable (name, rest)
  | _, [] -> None
Run Code Online (Sandbox Code Playgroud)

但据我所知,应该没有任何迹象表明元组中的第一个元素是 int。这是一个问题,因为当lookupTable函数运行时,编译器会抱怨我没有向它传递一个整数。也许我错过了一些非常明显的东西,但它非常令人难以置信。这是程序的其余部分

open Base

type id = string
type binop = Plus | Minus | Times | Div

type stm =
  | …
Run Code Online (Sandbox Code Playgroud)

ocaml ocaml-core

1
推荐指数
1
解决办法
131
查看次数

标签 统计

ocaml ×1

ocaml-core ×1