Sml 更好地理解错误

Sml 更好地理解错误,sml,smlnj,Sml,Smlnj,我是SML的初学者。这件事很简单,但花了好几个小时,但我还是解决不了 我必须得到一个字符串列表,并反转每个字符串以及列表。做任何事情都不需要定义主函数之外的多个函数。e、 g.[“堆栈”、“溢出”、“尼斯”]将给出[“ecin”、“wolfrevo”、“kcats”] 错误消息是: Error: operator and operand don't agree [tycon mismatch] operator domain: 'Z -> 'Y operand: (

我是SML的初学者。这件事很简单,但花了好几个小时,但我还是解决不了

我必须得到一个字符串列表,并反转每个字符串以及列表。做任何事情都不需要定义主函数之外的多个函数。e、 g.[“堆栈”、“溢出”、“尼斯”]将给出[“ecin”、“wolfrevo”、“kcats”]

错误消息是:

Error: operator and operand don't agree [tycon mismatch]
  operator domain: 'Z -> 'Y
  operand:         (string -> string) * 'X
  in expression:
    map ((fn x => <exp> <exp>),l)
错误:运算符和操作数不一致[tycon不匹配]
运算符域:“Z->”Y
操作数:(字符串->字符串)*'X
在表达上:
地图((fn x=>),l)
如果方法错误,不要解决所有问题。暗示一下。这是一个家庭作业问题


谢谢。

SML功能
map
。要在列表的每个元素上映射函数
f
,必须编写
map f l
。你写的是
map(f,l)
,意思是“把函数
(f,l)
映射到…以后要确定的东西上。”编译器向你抱怨,因为
(f,l)
不是函数(
'Z->'Y
);它是一个元组,由一个函数和一个列表组成(
(string->string)*'X

我还没有仔细研究您的解决方案,但如果您对这个答案发表评论并要求我这样做,我可能会这样做。:)


EDIT:Oh和
(fn(x)=>(内爆o rev o explode)(x))
只是一种冗长的写作方式
(内爆o rev o explode)
,原因与编写
(fn(x)=>f(x))
是一种冗长的写作方式
f
得到了回答,但还是被否决了一样,我相信这是你应该向助教提出的问题,而不是“乱七八糟”的问题。谢谢!这是代码的唯一错误!现在可以了!:)
Error: operator and operand don't agree [tycon mismatch]
  operator domain: 'Z -> 'Y
  operand:         (string -> string) * 'X
  in expression:
    map ((fn x => <exp> <exp>),l)