小编chr*_*eyn的帖子

在终端中传递字符串进行编辑,并在Haskell程序中使用enter-key进行确认

有没有办法在终端"打印"一个字符串,用户可以编辑这个字符串并按Enter确认并将其传回程序?

io terminal haskell

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

如何在Hspec测试中使用QuickCheck?

我为我的Haskell项目构建了初始代码库,我cabal init 用Hspec编写了几个测试.在cabal test它上编译和运行这些测试,如预期,并给出失败/传递的消息.

现在我加入了一个quickCheck测试,即使测试失败,终端输出也无法识别quickCheck测试.

但在dist/test/dir中我可以看到测试日志 *** Failed! ...

有没有办法在测试工作流程中"包含"quickCheck测试.因此,我不必在每次测试运行后查看测试日志.

import Test.Hspec
import Test.QuickCheck

spec :: Spec
spec = do
    describe "myTest" $ do
        it "Something something" $ do
            myTest "" `shouldBe` False
            quickCheckWith stdArgs { maxSuccess = 1000 } prop_myTest -- <== ?
Run Code Online (Sandbox Code Playgroud)

tdd haskell quickcheck cabal property-testing

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

Haskell示例纯粹且返回不可互换

Haskell的pure功能是一样的return吗?

如果Monad已经是Applicative的一个实例,我可以创建一个Monad实例,对吧?所以我想知道Applicative的 pure每次都可以与Monad互换return吗?有没有一个例子,他们不一样?

data HelloType a = HelloType { getValue :: a } deriving (Show, Eq)

instance Functor HelloType where
    fmap f (HelloType y) = HelloType (f y)

instance Applicative HelloType where
    (<*>) (HelloType f) (HelloType x) = HelloType (f x)
    pure = HelloType

instance Monad HelloType where
    (>>=) (HelloType x) f = f x
    -- return = pure
    return = HelloType

plus3 :: (Num a) => Maybe a -> HelloType (Maybe a) …
Run Code Online (Sandbox Code Playgroud)

monads haskell applicative

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

如果文件存在则获取文件内容或默认String

我检查,doesFileExist filePath但我怎么能handle <- openFile filePath ReadMode只在文件存在时使用

或者,当文件不存在时,如何获取默认字符串?

getFileContent filePath = do
    handle <- openFile filePath ReadMode
    content <- hGetContents handle
    return content

main = do
    blacklistExists <- doesFileExist "./blacklist.txt"
    let fileContent = if not blacklistExists
            then ""
            else getFileContent "./blacklist.txt"

    putStrLn fileContent
Run Code Online (Sandbox Code Playgroud)

io haskell

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

sbcl 使用 --script 立即解析并执行

如果我运行以下 common lisp 代码:

(print "A")
(print "B")
(print "C - No closing bracket"
Run Code Online (Sandbox Code Playgroud)

sbcl --script ./test.lisp

打印AB。之后错误就像预期的那样出现。

SBCL是否解析第一行(或者换句话说“括号内的代码”)并在进入下一部分之前立即执行它?或者它是否解析整个文件并“标记”AST 中的特定点存在解析器错误?

parsing sbcl common-lisp abstract-syntax-tree

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

获取不带大写的符号名称

在 Common Lisp 中是否有可能得到symbol-name没有大写结果的 a ?

(symbol-name 'aAbB)
;; => "AABB"

(OTHER_FUNCTION? 'aAbB)
;; => "aAbB"
Run Code Online (Sandbox Code Playgroud)

我想使用符号名称作为字符串但区分大小写。

lisp common-lisp

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