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

我在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=[] 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。记录中的两个布尔值不能构成布尔值。