【问题标题】:Custom datatypes in SMLSML 中的自定义数据类型
【发布时间】:2015-10-24 16:54:35
【问题描述】:

我是第一次在 SML 中使用数据类型。我用四张扑克牌定义了一个名为 suit 的数据类型

datatype suit = Spades | Clubs | Hearts | Diamonds;

现在我想编写一个函数,它接受西装并返回它的字符串表示形式。目前是这里

fun suitname(x) =
if x = Spades then
    "Spades"
else if x = Clubs then
    "Clubs"
else if x = Diamonds then
    "Diamonds"
else if x = Hearts then
    "Hearts"
else
    "Undefined suit";

它编译得很好,但是当我尝试用每套西装调用它时

suitname Hearts;
suitname Spades;
suitname Clubs;
suitname Diamonds;

我收到此错误

不知道为什么。任何帮助将不胜感激!

【问题讨论】:

  • 可以将if-else链缩短为case x of Spades => "Spades" | Clubs => "Clubs" | Diamonds => "Diamonds" | Hearts => "Hearts"

标签: types enums sml


【解决方案1】:

此错误消息看起来像您定义了数据类型 suit 两次(可能是交互方式?),并且函数的定义使用旧定义,调用站点使用新定义。尝试重新输入函数定义。

【讨论】:

  • 我知道发生了什么,我在定义函数后定义了数据类型。显然,定义顺序在这种语言中很重要。这个答案让我意识到,所以我会接受它。谢谢
猜你喜欢
  • 2021-02-15
  • 2023-03-14
  • 2014-07-19
  • 2017-09-29
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
相关资源
最近更新 更多