【问题标题】:(sml/nj) Correct type?(sml/nj) 正确的类型?
【发布时间】:2013-01-30 19:05:11
【问题描述】:

对于我的任务,我必须对类型执行两个功能:

 wt: trie -> (char list list -> ’a)-> ’a
 aw: trie list -> (char list list -> ’a)-> ’a

但我所拥有的是这个,我想知道它是否是同一件事:

 wt: 'a trie -> ('a list list -> ’a list list)-> ’a list list 
 aw: 'a trie list -> ('a list list -> ’a list list)-> ’a list list

这是我的功能:

datatype ’a trie = Node of ’a * (’a trie) list | Empty

fun words_in_trie Empty cont = cont [[]]
    | words_in_trie (Node (c, lis)) cont = all_words lis (fn j => map (fn y => [c]@y) j)

【问题讨论】:

    标签: types functional-programming sml


    【解决方案1】:

    不,那些不一样。对于它们中的每一个,请查看第二个参数,即函数。你的作业说:

    char list list -> 'a
    

    你的版本说:

    'a list list -> ’a list list
    

    好的,让我们假设在您的函数中,'achar。这意味着我们可以将其重写为

    char list list -> char list list
    

    这与作业所说的不同。当然,作业中的'a可能理论上是char list list,但是当它被指定为'a时,这可能意味着你的老师希望它是通用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2010-10-23
      • 2013-10-20
      • 2012-03-12
      • 2014-07-15
      相关资源
      最近更新 更多