小编Chi*_*dio的帖子

参数化类

我有一堂课如下:

class Token a where
    symbol :: a -> String
Run Code Online (Sandbox Code Playgroud)

我还希望 的所有实例都有一个返回参数化类型的Token函数。convert仅转换就可以正常工作:

class Token a b where
    convert :: a -> b

data Egal = One | Two

instance Token Egal Int where
    convert One = 111
    convert Two = 222

main = print $ show (convert One :: Int)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试同时使用两者时symbolconvert我收到了有关歧义的错误。这是我的代码:

class Token a b where
    convert :: a -> b
    symbol :: a -> String

data Egal = One | Two …
Run Code Online (Sandbox Code Playgroud)

haskell class parametrize

11
推荐指数
2
解决办法
384
查看次数

自引用数据结构

我正在尝试为图表构建数据结构。

以下代码似乎按预期工作:

data NodeRef = NodeRef String Int -- NodeRef name targetIndex

data Node = Node String Node -- Node name targetNode

ref0 = NodeRef "Zero" 1
ref1 = NodeRef "One" 2
ref2 = NodeRef "Two" 0
refs = [ref0, ref1, ref2]

deref :: [NodeRef] -> Node
deref refs = head allNodes
    where
        deref' (NodeRef name targetIndex) = Node name (allNodes !! targetIndex)
        allNodes = map deref' refs

showme :: Node -> Int -> [String]
showme _ 0                      = [] …
Run Code Online (Sandbox Code Playgroud)

haskell

3
推荐指数
1
解决办法
95
查看次数

标签 统计

haskell ×2

class ×1

parametrize ×1