首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OCaml - Base导致元组解构问题

OCaml - Base导致元组解构问题
EN

Stack Overflow用户
提问于 2021-06-05 04:51:09
回答 2查看 57关注 0票数 0

Base被添加到下面的代码中时,为什么OCaml编译器期望hwints?tup应该是一个元组-有语法问题吗?是什么关于Base导致了这个错误?

代码语言:javascript
复制
open Base

let () =
  let tup = ("hello", "world") in
  let h, w = tup in
  if h = w then print_endline "equal" else print_endline "not equal"

错误:

代码语言:javascript
复制
91 |   if h = w then print_endline "equal" else print_endline "not equal"
          ^
Error: This expression has type string but an expression was expected of type
         int
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-05 05:35:15

Base和其他Janestreet库一起,不鼓励多态比较函数,并隐藏compare(=)和其他运算符以及它们的单调等效项。他们或多或少随意地选择了比较整数的函数(遵循SML传统)。

您仍然可以使用以下命令获取多态比较函数

代码语言:javascript
复制
open Poly

或者,在本地,

代码语言:javascript
复制
let true = Poly.((1,2) = (1,2))
票数 3
EN

Stack Overflow用户

发布于 2021-06-05 04:55:37

基库删除了多态比较。您可以这样使用运算符:

代码语言:javascript
复制
open Base

let () =
  let tup = ("hello", "world") in
  let h, w = tup in
  if String.(h = w) then print_endline "equal" 
  else print_endline "not equal"

编辑:如果解释没有说明清楚,则基础库不会影响OCaml处理元组的方式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67843828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档