如何将Data.ByteString.Internal.ByteString输入strln?

如何将Data.ByteString.Internal.ByteString输入strln?,string,haskell,io,output,String,Haskell,Io,Output,我正在学习haskell,并决定尝试编写一些小测试程序来使用haskell代码和使用模块。目前,我正在尝试使用第一个参数使用Cypto.PasswordStore创建密码散列。为了测试我的程序,我尝试从第一个参数创建一个散列,然后将散列打印到屏幕上 import Crypto.PasswordStore import System.Environment main = do args <- getArgs putStrLn (makePassword (head args

我正在学习haskell,并决定尝试编写一些小测试程序来使用haskell代码和使用模块。目前,我正在尝试使用第一个参数使用Cypto.PasswordStore创建密码散列。为了测试我的程序,我尝试从第一个参数创建一个散列,然后将散列打印到屏幕上

import Crypto.PasswordStore
import System.Environment

main = do
    args <- getArgs
    putStrLn (makePassword (head args) 12)
我一直在使用以下链接作为参考,但我现在只是尝试错误,没有用。

您尚未导入ByteString,因此它正在尝试使用putStrLn的字符串版本。 我已经为
String->ByteString
转换提供了
toBS

试一试

导入Crypto.PasswordStore
导入系统。环境
将限定数据.ByteString.Char8作为B导入
toBS=B.pack
main=do
args>=B.putStrLn

你必须做两件不同的事情。首先,
makePassword
在IO中,因此需要将结果绑定到一个名称,然后将该名称传递给IO函数。其次,您需要从
Data.ByteString

import Crypto.PasswordStore
import System.Environment
import qualified Data.ByteString as B

main = do
    args <- getArgs
    pwd <- makePassword (B.pack $ head args) 12
    B.putStrLn pwd
导入Crypto.PasswordStore
导入系统。环境
将限定数据.ByteString作为B导入
main=do

args您的意思是将限定数据作为B导入到testring吗?还有一个错误:无法将预期类型
B.ByteString'与实际类型匹配
String'预期类型:[B.ByteString]实际类型:[String]在
head'的第一个参数中,即
makePassword'的第一个参数中的
args',即
(head args)'谢谢!这对我有用。代码确实警告了不推荐使用的函数,但答案正是我所需要的。警告:在使用'B.putStrLn'(从Data.ByteString导入)时:已弃用:“使用Data.ByteString.Char8.putStrLninstead@NerdGGuy让我们一起去掉
数据.ByteString
,然后只使用
数据.ByteString.Char8
(请参见编辑)。太好了。使用Data.ByteString.Char8对我来说很有意义。
import Crypto.PasswordStore
import System.Environment
import qualified Data.ByteString.Char8 as B

toBS = B.pack

main = do
    args <- getArgs
    makePassword (toBS (head args)) 12 >>= B.putStrLn
import Crypto.PasswordStore
import System.Environment
import qualified Data.ByteString as B

main = do
    args <- getArgs
    pwd <- makePassword (B.pack $ head args) 12
    B.putStrLn pwd
main = do
    args <- getArgs
    B.putStrLn =<< makePassword (B.pack $ head args) 12