首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正在尝试返回元组

正在尝试返回元组
EN

Stack Overflow用户
提问于 2019-11-13 11:45:44
回答 1查看 57关注 0票数 0

所以我试着在haskell和计算机玩游戏的时候玩nim游戏,作为任务的一部分,但我在计算机部分遇到了困难。我希望做的是返回一个包含堆编号(行)和要删除的编号的元组。到目前为止,我得到了以下信息:

代码语言:javascript
运行
复制
ai board [] = []
ai board (x:xs) = 
    do
       let target = foldr (^) board
       if target < x then do
          let num = x-target   
          return (x, num)
       else
          ai board xs

这会引发以下错误:

代码语言:javascript
运行
复制
Oblig3.hs:75:1: error:
    * Non type-variable argument in the constraint: Ord (t b -> b)
      (Use FlexibleContexts to permit this)
    * When checking the inferred type
        ai :: forall (t :: * -> *) b.
              (Ord (t b -> b), Foldable t, Integral b, Num (t b -> b)) =>
              b -> [t b -> b] -> [(t b -> b, t b -> b)]
   |
75 | ai board [] = []

PS板是一个整数列表,显示堆中还剩下多少元素,计算机算法基于在Nim's wikipedia上找到的算法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-13 11:47:57

foldr有3个参数,但在target = foldr (^) board中,你只给它2个参数。你不能将它与if target < x进行比较,因为它还不是一个数字,但仍然是一个等待一个参数的函数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58830026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档