我刚刚开始学习Haskell,我在尝试弄清楚文件读取的工作方式时遇到了很多麻烦.
例如,我有一个文本文件"test.txt"它包含数字行,例如:
32 4
2 30
300 5
Run Code Online (Sandbox Code Playgroud)
我想阅读每一行,然后评估每个单词并添加它们.因此,我到目前为止尝试做这样的事情:
import System.IO
import Control.Monad
main = do
let list = []
handle <- openFile "test.txt" ReadMode
contents <- hGetContents handle
singlewords <- (words contents)
list <- f singlewords
print list
hClose handle
f :: [String] -> [Int]
f = map read
Run Code Online (Sandbox Code Playgroud)
我知道这是完全错误的,但我根本不知道如何正确使用语法.任何帮助将不胜感激.除了这个代码的示例和解释之外的好教程的链接:http: //learnyouahaskell.com/input-and-output我已经完全阅读了它
我想通过套接字将证书从"证书颁发机构"发送到节点.我有一个使用此示例创建的证书 https://skippylovesmalorie.wordpress.com/2010/02/12/how-to-generate-a-self-signed-certificate-using-pyopenssl/ 如何将其转换为. pem文件,所以我可以通过套接字将其作为字符串发送,然后在另一端将其转换回.pem并使用get_certificate从中提取此证书. Python:使用pyOpenSSL.crypto读取pkcs12证书 它可能是一种hacky方式,但我想为自己简化它.(或不)
我正在复活这个问题没有回答的问题 如何将PyOpenSSL对象转换为PEM编码的字符串?
我在查找使用OpenSSL生成公钥和私钥对的命令时遇到问题.有人可以给我看一些示例代码.
谢谢
我正在使用CSV文件,我将它们解析为[[String]]该数组中的第一个[String]是头文件,例如:
["Code","Address","Town"]
Run Code Online (Sandbox Code Playgroud)
其余的是信息阵列
["ABA","12,east road", "London"]
Run Code Online (Sandbox Code Playgroud)
我想创建一个查询系统,其中输入和结果将看起来像这样
>count "Town"="*London*" @1="A*"
14 rows
Run Code Online (Sandbox Code Playgroud)
列名可以作为字符串输入或作为@与列的索引我有一个案例开关来识别第一个单词输入,因为我将扩展我的CSV阅读器以获得不同的功能.当它看到单词计数时,它将转到一个将返回行数的函数.我不知道如何开始解析查询.起初我以为我可能会在单词count之后将结果字符串拆分成每个查询的字符串列表,执行一个并使用满足此查询的列表再次检查下一个,留下一个列表,所有查询都是满意,然后计算条目数量并返回它们.还有一个案例开关来识别第一个输入是字符串还是@符号.*用于表示单词后面的零或任何字符.我不知道如何开始实现这个或者如果我错过了我的解决方案可能遇到的问题.启动我的任何帮助,我都会非常满意.我对Haskell不是很先进(因为我刚开始),所以我也很感激保持简单.谢谢
我有这样的代码
main :: [[String]] -> IO ()
main st = do
answer <- getLine
case answer of
"q" -> return ()
"load" x -> main $ parseCSV $ readFile x
Run Code Online (Sandbox Code Playgroud)
这不起作用,所以我的问题是如何使用case switch语句来改变输入的内容例如在我的代码中我希望用户的输入是q或load,但是负载会不断变化:
load "sample.csv"
load "test.csv"
load "helloworld.csv"
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我将不断变化的输入表示为X,但这并不像我预期的那样工作.
感谢帮助,谢谢.
我有这个代码,我试图创建以计算记录数量并打印它们,我似乎无法使它工作我不断得到函数reportReg的错误应用于一个参数但其类型[String]没有.
report :: [[String]] -> String -> [String]
report (x:xs) typ = do
case typ of
"registrations" -> reportReg (map head xs)
"completions" -> reportReg (map head xs)
reportReg :: [String]
reportReg [x] = do
print x
print 1
reportReg (x:xs) = do
let count = instances x (x:xs)
print x
print count
let newlist = filter (==x) (x:xs)
reportReg newlist
instances::String->[String]->Int
instances x [] = 0
instances x (y:ys)
| x==y = 1+(instances x ys)
| otherwise = instances …Run Code Online (Sandbox Code Playgroud)