小编Dan*_*ema的帖子

Haskell 中 read 函数的大小写匹配

我想知道如何检查 Haskell 中读取函数的成功或失败(导致 Prelude.read: no parse)。就我而言,我在格式化记录结构的代码中运行“(read formatted :: Int)”,其中字段可能是字符串形式的单个 Int,但也可能包含其他内容。我只想将我的函数应用于读取返回 Int 的字段。谢谢。

parsing haskell record switch-statement

2
推荐指数
1
解决办法
199
查看次数

haskell 中 2 个新类型的“或”模式匹配

我在 haskell 程序中使用决策图库。为此,我想声明 2 种不同的(新)类型来跟踪我正在处理的决策图。我使用的库是 cudd,决策图基类型有一个 DdNode,但我的问题仅与 Haskell 相关。

newtype Bdd = ToBdd Cudd.Cudd.DdNode
newtype Zdd = ToZdd Cudd.Cudd.DdNode
Run Code Online (Sandbox Code Playgroud)

通常我想在调用函数时区分它们,但现在我想使用一个不必区分这两种类型的函数。我主要尝试通过 3 种不同的方式来解决这个问题:

data Dd = ToBdd Bdd | ToZdd Zdd

printDdInfo :: Dd -> IO()
printDdInfo (ToZdd dd) = do
    putStrLn "Hello, zdd!"
    Cudd.Cudd.cuddPrintDdInfo manager dd
printDdInfo (ToBdd dd) = do
    putStrLn "Hello, bdd!"
    Cudd.Cudd.cuddPrintDdInfo manager dd

printDdInfo :: Either Bdd Zdd -> IO()
printDdInfo (ToZdd dd) = do
    putStrLn "Hello, zdd!"
    Cudd.Cudd.cuddPrintDdInfo manager dd
printDdInfo (ToBdd dd) = do …
Run Code Online (Sandbox Code Playgroud)

import haskell either binary-decision-diagram newtype

0
推荐指数
1
解决办法
70
查看次数