Uczę się haskell i postanowiłem spróbować napisać kilka małych programów testowych, aby uzyskać dostęp do kodu Haskell i modułów. Obecnie próbuję użyć pierwszego argumentu do utworzenia skrótu hasła za pomocą Cypto.PasswordStore. Aby przetestować mój program, próbuję utworzyć skrót z pierwszego argumentu, a następnie wydrukować skrót do ekranu.Jak mogę putStrLn a Data.ByteString.Internal.ByteString?
import Crypto.PasswordStore
import System.Environment
main = do
args <- getArgs
putStrLn (makePassword (head args) 12)
Dostaję następujący błąd:
testmakePassword.hs:8:19:
Couldn't match expected type `String'
with actual type `IO Data.ByteString.Internal.ByteString'
In the return type of a call of `makePassword'
In the first argument of `putStrLn', namely
`(makePassword (head args) 12)'
In a stmt of a 'do' block: putStrLn (makePassword (head args) 12)
Używam następujących linków jako odniesienia, ale teraz jestem po prostu metodą prób erroring bezskutecznie. http://hackage.haskell.org/packages/archive/bytestring/0.9.0.4/doc/html/Data-ByteString-Internal.html http://hackage.haskell.org/packages/archive/pwstore-purehaskell/2.1/doc/html/Crypto-PasswordStore.html
Thanks ! To działa dla mnie. Kod ostrzega o przestarzałej funkcji, ale odpowiedź jest tym, czego potrzebowałem. _Ostrzeżenie: Podczas używania 'B.putStrLn ' (importowane z Data.ByteString): Przestarzałe:" Użyj Data.ByteString.Char8.putStrLn zamiast_ – NerdGGuy
@NerdGGuy Pozbądźmy się całkowicie 'Data.ByteString' i po prostu użyj'. Data.ByteString.Char8' zamiast tego (patrz edytuj) – AndrewC
Świetnie, używanie Data.ByteString.Char8 ma dla mnie sens – NerdGGuy