小编use*_*127的帖子

"读取"字符串数据到haskell"数据"类型

感谢这个优秀的教程,我知道如何读取一个字符串(在这种情况下,从一个文件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)

haskell types

10
推荐指数
2
解决办法
7858
查看次数

Haskell:用IO [FilePath]得不到这个

在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?

任何反馈或愚蠢的赞美.

io haskell

4
推荐指数
2
解决办法
1287
查看次数

Saxon XPath 错误 - “无法序列化属性”

当我运行 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)

转变。还有其他方法吗?

saxon xpath-2.0

3
推荐指数
1
解决办法
297
查看次数

标签 统计

haskell ×2

io ×1

saxon ×1

types ×1

xpath-2.0 ×1