小编Sir*_* DK的帖子

Haskell ::将文本解析为List列表

嗨,大家好,

我正在解析一个看起来像这样的文本文件:

114.474998474121 15.7440004348755 25.806999206543 -873 172 182 188 
114.46199798584 15.7419996261597 25.8799991607666 -1396 180 192 205 
Run Code Online (Sandbox Code Playgroud)

并希望它可以这样读:

[[114.475,15.744,25.807,-873.0,172.0,182.0,188.0],
[114.462,15.742,25.88,-1396.0,180.0,192.0,205.0]]
Run Code Online (Sandbox Code Playgroud)

目前我的文本解析代码没有给出.这是我的代码:

main = do
    text <- readFile "mytext.txt" 
    let
        pcVal = map read (words text) :: [Float]
    print pcVal
    return ()
Run Code Online (Sandbox Code Playgroud)

此代码将所有文本解析为单个列表,如下所示:

[114.475,15.744,25.807,-873.0,172.0,182.0,188.0,
114.462,15.742,25.88,-1396.0,180.0,192.0,205.0]
Run Code Online (Sandbox Code Playgroud)

我找不到如何将整行(在文本文件中)作为列表,并将第二行作为另一个列表直到文件末尾.感谢有人有这方面的经验.谢谢.

haskell list text-parsing

2
推荐指数
1
解决办法
80
查看次数

Haskell ::在递归中使用括号

我只是想知道,对于递归示例:

squaresRec :: [Double] -> [Double]   
squaresRec [] = []                       
squaresRec (x:xs) = x*x : squaresRec xs
Run Code Online (Sandbox Code Playgroud)

为什么在递归的情况下,没有括号?不应该假设是这样的:

squaresRec :: [Double] -> [Double]   
squaresRec [] = []                       
squaresRec [x:xs] = x*x : squaresRec xs
Run Code Online (Sandbox Code Playgroud)

我知道这不行.但只是想知道背后的解释.

recursion haskell

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

Haskell ::使用符号$

这是我的代码:

    data = [1,2,3,4,5,6,7,8,9,10]
    cak' [] = []
    cak' (x:xs) =
        if x >= 2 then
            cak' (x - 2) : cak' (xs)
        else
            x : cak' (xs)
    run = cak' data
Run Code Online (Sandbox Code Playgroud)

它不会工作,直到我改变cak' (x - 2) : cak' (xs)cak' $ x - 2 : cak' (xs).为什么它会产生这样的影响?

haskell symbols

1
推荐指数
2
解决办法
347
查看次数

标签 统计

haskell ×3

list ×1

recursion ×1

symbols ×1

text-parsing ×1