当前位置: 首页 > 知识库问答 >
问题:

预期论证与实际论证的冲突

张嘉佑
2023-03-14
belongs :: Eq a => a -> [a] -> [a]

belongs e (h:t) = if ( h == e) then [] else belongs e t
belongs e [] = [e]




nub :: Eq a => [a] -> [a]
nub l = nub' l [] 
    where 
        nub' [] new_list = new_list
        nub' (x:xs) new_list = (nub' xs ((\ e new_list ->  
            case (belongs e new_list) of
            []    ->  new_list
            (h:t) ->  (h:new_list))(x new_list)))

在调用nub'的返回类型中,[a]的预期类型[a0]->[a0]无法与实际类型[a0]->[a0]匹配。可能的原因:nub'应用于表达式:nub'公式中nub'l[]中的参数太少:

 nub l
  = nub' l []
  where
      nub' [] new_list = new_list
      nub' (x : xs) new_list
        = (nub'
             xs
             ((\ e new_list
                 -> case (belongs e new_list) of {
                      [] -> ...
                      (h : t) -> ... })
                (x new_list)))

nub'的第二个参数中,即表达式:nub'l[]中的[a0]->[a0]中的[a1]与实际类型[a1]nub方程中的[a1]无法匹配:

nub l
  = nub' l []
  where
      nub' [] new_list = new_list
      nub' (x : xs) new_list
        = (nub'
             xs
             ((\ e new_list
                 -> case (belongs e new_list) of {
                      [] -> ...
                      (h : t) -> ... })
                (x new_list)))

为什么不管用?我不能理解。请帮我一把。这些错误是可以理解的,但我不知道它们的原因。

共有1个答案

长孙硕
2023-03-14

您是否试图强制使用lambda和额外的括号((\e new_list->...)(x new_list))调用函数?如果是这样,这对一个不起作用,即使该语法起作用,那么您的括号也会不匹配。

放弃“尝试函数调用”和lambda,直接在nub'中使用xnew_list,或者如果您真的想重命名,使用let e=x在中绑定e。可以修复类型错误。

如果您真的想要lambda,那么您应该知道函数应用程序是使用空格而不是括号完成的,就像(\x->x+1)3一样。

 类似资料:
  • 我试图创建一个程序,它提示用户输入一个输入,只有当输入是整数时才显示输出 null 任何形式的帮助都将不胜感激!:)

  • 请问一下:在削弱题目中: 削弱论点/论证/论据/因果导致/另有他因的强度如何排序呢?

  • 我正试图用Java编写一个关于制表方法的程序。对于那些不熟悉的人来说,制表方法中的一个步骤是将具有相同数字1的二进制文件分组。因此,我们将具有相同数字1的组放在arraylist中。因此,如果我们有五个不同的组(第一个组包含no 1的数字,第二个组包含1的数字,等等),我们将它们存储在另一个arraylist中。因此,arraylist是arraylist中的一个。 在制表法中,我们将每组的元素与

  • 描述量 描述随机变量最完备的方法是写出该随机变量的概率分布。然而,正如我们在前面章节看到的,概率分布的表达往往都比较复杂,信息量很大。这如同我们购置汽车的时候,一辆汽车的全面数据可以说是海量的,比如汽车尺寸,油箱大小等等。我们选择一辆汽车时,往往只使用有限的几个具有代表性的量来代表汽车的主要特征,比如排气量,最大马力。我们信赖这几个量,因为它们可以“粗糙”的描述汽车的主要性能。这些量是汽车全面数据

  • 我正在尝试使用袖珍斯芬克斯转录音频文件。 但我得到了错误: 这里有一个我需要转录的音频文件:从GitHub下载 最终,我将批量转录超过5个小时的音频文件,像这样,目前他们都抛出相同的错误。 这是我试图转录的同一文件的一些统计数据: 这个文件的一些配置可能有问题,我已经做了一些预处理,将其与MP3合并,从flac转换为wav,等等。 现在对我来说,最简单的方法是什么? 是否可以不将文件重新采样到16

  • 为从发电机向负载传送最大功率,通常必须引入变压器,使得从负载的角度来看时,发电机的阻抗与负载相同。这里的情景大体类似。执行编码的转换器应当使信源在统计意义上与信道相匹配。经过转换器,从信道的角度看去,信源的统计结构应当与实现信道容量最大化的信源相同。定理9中的内容是说,尽管通常不可能实现完全匹配,但可以使它们达到任意接近程度。实际传送速率与容量C的比值可称为该编码系统的效率。它当然等于信道符号的实