有没有办法在终端"打印"一个字符串,用户可以编辑这个字符串并按Enter确认并将其传回程序?
我为我的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) 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) 我检查,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) 如果我运行以下 common lisp 代码:
(print "A")
(print "B")
(print "C - No closing bracket"
Run Code Online (Sandbox Code Playgroud)
sbcl --script ./test.lisp
打印A和B。之后错误就像预期的那样出现。
SBCL是否解析第一行(或者换句话说“括号内的代码”)并在进入下一部分之前立即执行它?或者它是否解析整个文件并“标记”AST 中的特定点存在解析器错误?
在 Common Lisp 中是否有可能得到symbol-name
没有大写结果的 a ?
(symbol-name 'aAbB)
;; => "AABB"
(OTHER_FUNCTION? 'aAbB)
;; => "aAbB"
Run Code Online (Sandbox Code Playgroud)
我想使用符号名称作为字符串但区分大小写。
haskell ×4
common-lisp ×2
io ×2
applicative ×1
cabal ×1
lisp ×1
monads ×1
parsing ×1
quickcheck ×1
sbcl ×1
tdd ×1
terminal ×1