我试图找到一个comonad的实际应用程序,我想我会试着看看我是否可以代表经典的Wumpus世界作为一个comonad.
我想使用这个代码让Wumpus左右移动穿过世界并清理脏瓷砖并避免凹坑.似乎唯一有用的comonad函数是extract(获取当前tile)以及移动和清理tile不能使用扩展或复制.
我不确定comonad是否合适,但我看过一个谈话(Dominic Orchard:Comonads的符号),其中comonads用于在二维矩阵中建模光标.
如果comonad是表示Wumpus世界的好方法,那么请您说明我的代码出错了吗?如果这是错的,你能否建议一个简单的comonads应用程序?
module Wumpus where
-- Incomplete model of a world inhabited by a Wumpus who likes a nice
-- tidy world but does not like falling in pits.
import Control.Comonad
-- The Wumpus world is made up of tiles that can be in one of three
-- states.
data Tile = Clean | Dirty | Pit
deriving (Show, Eq)
-- The Wumpus world is a one dimensional array partitioned into three
-- values: the …
Run Code Online (Sandbox Code Playgroud) 我正在使用SWI-Prolog创建一个Wumpus World项目.我应该从.txt文件中读取金币,凹坑和Wumpus的位置,如下所示:
GOLD 3 2
WUMPUS 3 3
PIT 2 1
PIT 3 4
Run Code Online (Sandbox Code Playgroud)
在单词标识对象的情况下,第一个数字标识对象的x位置,第二个数字标识对象的y位置.我知道如何打开文件并从中读取,我只是不知道如何告诉我的程序GOLD 3 2意味着黄金需要位于(3,2).