Sml 小编码错误
我在CPN ML中工作,这或多或少与SML相同。 我确信代码的以下部分是有效的:Sml 小编码错误,sml,ml,multiset,Sml,Ml,Multiset,我在CPN ML中工作,这或多或少与SML相同。 我确信代码的以下部分是有效的: color Product = string; color Number = int; color StockItem = record prod:Product * number:Number; color Stock = list StockItem; var x:StockItem; var s:Stock; fun incrs(x:StockItem,s:Stock) = if s=[] th
color Product = string;
color Number = int;
color StockItem = record prod:Product * number:Number;
color Stock = list StockItem;
var x:StockItem; var s:Stock;
fun incrs(x:StockItem,s:Stock) =
if s=[] then [x]
else (if (#prod(hd(s)))=(#prod(x))
then {prod=(#prod(hd(s))),number=((#number(hd(s)))+(#number(x)))}::tl(s)
else hd(s):: incrs(x,tl(s)));
fun decrs(x:StockItem,s:Stock)= incrs({prod=(#prod(x)),
number=(~(#number(x)))},s)
现在我的问题是,我需要为每个商店保留一个学生任务。因此,我做了以下改编:
color Store = string;
color StockItem = record prod:Product * number:Number * store:Store;
fun incrs(x:StockItem,s:Stock) =
if s=[]
then [x]
else (if {(#prod(hd(s)))=(#prod(x)), (#STORE(hd(s)))=(#STORE(x))}
then {prod=(#prod(hd(s))),
STORE = (#STORE(hd(s))),
number=((#number(hd(s)))+(#number(x)))}::tl(s)
else hd(s):: incrs(x,tl(s)));
但最后一行代码似乎不起作用。有人能帮我吗?非常感谢 代码以什么方式不起作用?它应该做什么?你想测试这两个条件吗?使用andalso。记录中的两个布尔值不能构成布尔值。