当前位置:  开发笔记 > 编程语言 > 正文

实例声明中的非法类型签名

如何解决《实例声明中的非法类型签名》经验,为你挑选了1个好方法。

我在实例声明错误中得到非法类型签名,我不知道为什么它会弹出我的程序.缩进似乎是对的,等等.我希望你能帮助我.

class Game g s | g -> s where
  findPossibleMoves :: Player -> g -> [(s,g)]
  identifyWinner :: g -> Player -> Maybe Player

instance Game HForest HStrategy where
  identifyWinner :: HForest -> Player -> Maybe Player
  identifyWinner ts p = getWinner $ getLeaves ts

  findPossibleMoves :: Player -> HForest -> [(HStrategy, HForest)]
  findPossibleMoves p ts = map (\s -> (s,move s ts)) $ getStrategies p ts

错误是:

Illegal type signature in instance declaration:
  findPossibleMoves :: Player -> HForest -> [(HStrategy, HForest)]
(Use InstanceSigs to allow this)
In the instance declaration for `Game HForest HStrategy'

Reid Barton.. 14

您在实例声明中有一个类型签名.这在标准的Haskell中是非法的.您可以启用InstanceSigs扩展(放在{-# LANGUAGE InstanceSigs #-}文件顶部)以允许它.或者只是删除类型签名.



1> Reid Barton..:

您在实例声明中有一个类型签名.这在标准的Haskell中是非法的.您可以启用InstanceSigs扩展(放在{-# LANGUAGE InstanceSigs #-}文件顶部)以允许它.或者只是删除类型签名.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有