gpt4 book ai didi

haskell - 如何在 Haskell 中对类型类进行分组

转载 作者:行者123 更新时间:2023-12-04 00:51:04 24 4
gpt4 key购买 nike

目的是让类型类约束代码更简洁。

type CanThrowDice = (Monad m, MonadIO m, Random a)

throwDice :: CanThrowDice m a => (a, a) -> m a
throwDice (r1, r2) = ...

而不是写:

throwDice ::  (Monad m, MonadIO m, Random a) => (a, a) -> m a
throwDice (r1, r2) = ...

我记得在某处看到过这种用法,但想不起来了。上面的代码警告我添加一些额外的编译指示,例如 ConstraintKinds,我无法让它工作。

最佳答案

唯一缺少的是类型参数 ma 以及 ConstraintKinds language pragma [ghc-doc] :

{-# LANGUAGE <b>ConstraintKinds</b> #-}

-- ↓ ↓ type parameters
type CanThrowDice <b>m</b> <b>a</b> = (Monad m, MonadIO m, Random a)

throwDice :: CanThrowDice m a => (a, a) -> m a
throwDice (r1, r2) = …

关于haskell - 如何在 Haskell 中对类型类进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66615472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com