Sml 更好地理解错误
我是SML的初学者。这件事很简单,但花了好几个小时,但我还是解决不了 我必须得到一个字符串列表,并反转每个字符串以及列表。做任何事情都不需要定义主函数之外的多个函数。e、 g.[“堆栈”、“溢出”、“尼斯”]将给出[“ecin”、“wolfrevo”、“kcats”] 错误消息是: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: (
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)