感谢这个优秀的教程,我知道如何读取一个字符串(在这种情况下,从一个文件people.txt直接读取到一个类型的同义词:
type Person = [Int]
Run Code Online (Sandbox Code Playgroud)
像这样:
people_text <- readFile "people.txt"
let people :: [Person]
people = read people_text
Run Code Online (Sandbox Code Playgroud)
我想要做的是使用数据类型(而不是类型同义词).
关于我在这里缺少什么的指示?我以为我能够直接读取字符串数据Person- 这样定义(信用到learnyouahaskell.com)
data Person = Person String String Int Float String String deriving (Show)
Run Code Online (Sandbox Code Playgroud)
当我尝试显而易见的时候
txt <- readFile "t.txt" (this works OK)
Run Code Online (Sandbox Code Playgroud)
用t.txt含
"Buddy" "Finklestein" 43 184.2 "526-2928" "Chocolate"
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
没有实例
(Read Person)
在ghci中学习教程等 - 到目前为止一切顺利.我完全错过了一些东西:我的功能构建了一个IO [FilePath]"东西".在ghci它出来像这样:
["xml","velocity.log.1","velocity.log"] (为简洁起见,列表被截断)
我看到功能正在做我想要的.下一步是我想自己"打印"出来.
我没做什么让我打印结果.我不想在Haskell中延续我的Java/C#/ Python习惯 - 没有任何意义.我相信Haskell以不同的方式做事是有充分理由的,但是我看不出如何从这个函数中获取(有限的)值.
module Main (
main
) where
import RecursiveContents
main = do putStrLn "this"
getRecursiveContents "/home/xyz/myDir"
Run Code Online (Sandbox Code Playgroud)
这有效.但是如果我想要main打印结果getRecursiveContents "/home/xyz/myDir"怎么办?
在ghci我可以输入/粘贴getRecursiveContents "/home/xyz/myDir",然后喷出的东西 - 我自己要做什么来打印?
如果我做 :
let xyz = getRecursiveContents "/home/xyz/myDir"在ghci中,我唯一能做的xyz就是键入:
xyz <enter>并查看结果.
我不能做头,尾等等.我知道这IO [FilePath]是特别的,而不是数组或列表相同[a]- 但我没有做的是帮助我理解过去.
我一定错过了一些东西 - 在" 了解你是哈斯克尔 "或" 真实世界哈斯克尔"中找不到的东西.我不是在正确的地方rtf?
任何反馈或愚蠢的赞美.
当我运行 XQuery 命令行时,只要结果是一个元素,它就可以工作。
当我扩展该 XQuery 以仅获取属性值时,它失败并显示以下错误:
SENR0001: Cannot serialize a free-standing attribute node (net.sf.saxon.om.NameOfNode)
Run Code Online (Sandbox Code Playgroud)
所以,这有效
java -cp ...Saxon-HE-9.9.0-1.jar net.sf.saxon.Query
-s:AnyXMLFileAvailable.xml -qs:/
Run Code Online (Sandbox Code Playgroud)
这失败了:
java -cp ...Saxon-HE-9.9.0-1.jar net.sf.saxon.Query
s:AnyXMLFileAvailable.xml -qs://@*
Run Code Online (Sandbox Code Playgroud)
只要 XML 中的任何地方至少有一个属性,此命令就会失败并出现上述错误
我相信这可以通过许可的撒克逊人来解决,它可以使用
-outval:recover
Run Code Online (Sandbox Code Playgroud)
转变。还有其他方法吗?