小编rom*_*syn的帖子

为类型为* - >*的类型类的实例键入参数约束

假设我有Heap a类型Heap的类型构造函数* -> *.堆上的许多基本操作都要求a类型是Ord类类的实例.

data Heap a = ...

findMin :: Ord a => Heap a -> a
deleteMin :: Ord a => Heap a -> Heap a
Run Code Online (Sandbox Code Playgroud)

我想将Heap类型声明为Foldable类型类的实例,只要a类型参数是Ord类型类的实例(它将很容易表达通过findMindeleteMin函数).

当我们处理需要类型的类型类时,可以很容易地表达这种关系*,例如Show:

instance Show a => Show (Heap a) where
    show h = ...
Run Code Online (Sandbox Code Playgroud)

但是我在申报时遇到了问题Foldable:

instance Foldable Heap where
    -- Ouch, there is no …
Run Code Online (Sandbox Code Playgroud)

haskell typeclass

16
推荐指数
1
解决办法
1485
查看次数

Haskell HXT:使用远程DTD解析xml文档而不使用hxt-curl

我正在尝试解析以下XML文档HXT:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Key</key>
    <string>Value</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

我不想在这里进行任何验证,因为它需要网络访问.不幸的是,HXT仍然希望安装hxt-curl/ hxt-httppackages来解析这个简单的文档:

Prelude> :m +Text.XML.HXT.Core
Prelude Text.XML.HXT.Core> runX $ readDocument [withValidate no] "example.xml"

fatal error: HTTP handler not configured,
please install package hxt-curl and use 'withCurl' config option
or install package hxt-http and use 'withHTTP' config option
Run Code Online (Sandbox Code Playgroud)

我不想将hxt-curl/ hxt-httppackages 添加到依赖项列表中,因为我并不真正需要它们.我无法更改我正在解析的文档.移动到另一个xml解析库也是不可取的.

有没有办法用HXT解析样本文档而不添加不必要的包?

haskell hxt

5
推荐指数
1
解决办法
217
查看次数

标签 统计

haskell ×2

hxt ×1

typeclass ×1