【发布时间】:2012-11-14 16:56:35
【问题描述】:
使用折叠函数 SML 创建查找函数
我需要在标准 ML 中创建一个名为 lookup(k, table) 的函数,如果 k 不是查找表中的键,则返回 NONE,如果 (k,v) 在则返回 (SOME (k,v))桌子。例如lookup(3, [(1,4),(14,5),(7,3),(22,6]) 为NONE,而lookup (1,[(1,4),(14,5) ,(7,3,(22,6)]) 是 (SOME (1,4))。
我想使用这个查找功能:
fun find pred [] = NONE
| find pred (x::rest) = if pred x then SOME x else find pred rest;
这是我目前所拥有的:
fun lookup(k,table) = NONE
| lookup(k, find(k,table)) =
if k = SOME then SOME else NONE;
请帮帮我,因为这个机器学习问题,我一直在拔头发。
【问题讨论】:
-
那么什么不适合你?我首先要注意的是,您的语法有点偏离。包含
find(k,table)会使您看起来像是在尝试进行模式匹配。此外,函数find已被柯里化,您正试图以元组形式使用它。也许您可以提炼出一些具体问题,并在收到具体错误消息时发布它们。