用 Haskell 实现简化版 21 点游戏及 AI 应用概述
1. 构建游戏顶层:StateT IO
在 src 文件夹中创建一个名为 GameFloor.hs 的文件,为游戏的单子栈构建顶层:
{-#LANGUAGE OverloadedStrings #-}
module GameFloor
where
import Control.Monad.State
import Cards
-- Our monad transformer stack
type Game = StateT GameState IO
为了使代码能够编译,需要仔细编写所有导入语句,并在 package.yaml 的依赖列表中添加 mtl ,就像之前添加 random 一样。这里使用 mtl 库,虽然也可以使用 transformers 。 mtl 是基于 transformers 构建的,并提供了一些额外的实用功能。
在任何 Game 计算中,可以使用 get >>= 或 state <- get (使用 do 表示法)来访问当前状态(类型为 GameState ),还可以使用 <
超级会员免费看
订阅专栏 解锁全文
663

被折叠的 条评论
为什么被折叠?



