我想要一个目录中的文件排序列表.如何将该sort
函数应用于IO
monad 列表?
import System.Directory
import Data.List
sortedFiles :: FilePath -> IO [FilePath]
sortedFiles path = do
files <- getDirectoryContents "."
return sort files -- this does not work
Run Code Online (Sandbox Code Playgroud) 我如何过滤列表,以便只返回整数列表?
例如,过滤列表就像[1, 1.2, 2, 2.2]
返回一样[1, 2]
.
我无法弄清楚为什么我得到两个不同的结果,但我确定它与IO
我有所关系,我开始讨厌!
例如:
ghci> x <- readFile "foo.txt"
ghci> let y = read x :: [Int]
ghci> :t y
y :: [Int]
Run Code Online (Sandbox Code Playgroud)
现在,当我创建该文件并执行相同的操作时,它出现了IO [Int]
吗?
foo.txt
是一个仅包含以下内容的txt文件: 12345
有人可以向我解释一下吗?因为我要抢购它!
感谢您的任何见解!
我正在尝试使用Haskell(我也是全新的)并且每当我尝试使用ghci编译它时,我得到了Not in scope: 'isNumber'
什么,我做错了什么?
digits :: [a] -> Bool
digits a = digits a True
digits1 :: [a] -> Bool -> Bool
digits1 [] False = False
digits1 [] True = True
digits1 (l:ls) True = digits ls isNumber l
digits1 (l:ls) False = False
Run Code Online (Sandbox Code Playgroud) 我有一个shell脚本来自动化我的程序的构建.我需要改造的版本号码,如V4_5_1-RC1
到4.5.1-RC1
.该V
应被删除和_
应改为.
.我尝试了几件事,例如用sed:
$NAMEEXT = "V4_5_1-RC1"
$lffNameRSC = ${sed -e "s/V//g" <<< $NAMEEXT}
$lffNameRSC = ${sed -e "s/_/./g" <<< $lffNameRSC}
echo $lffNameRSC
Run Code Online (Sandbox Code Playgroud)
但我收到了错误.
./makerelease.sh: line 113: ${sed -e "s/V//g" <<< $NAMEEXT}: bad substitution
./makerelease.sh: line 114: ${sed -e "s/_/./g" <<< $lffNameRSC}: bad substitution
Run Code Online (Sandbox Code Playgroud) 假设有一个功能def f = { x -> x + 4 }
.
有没有办法以某种方式称它为7.f()
和得到11
?
agrupa :: String -> [(Char,Int)]
agrupa [ ] = [ ]
agrupa (x:xs) = let (l1, l2) = span' (==x) xs
in (x, (length l1) + 1) : agrupa l2
span' :: (a->Bool) -> [a] -> ([a],[a])
span' p l = (takeWhile p l, dropWhile p l)
Run Code Online (Sandbox Code Playgroud)
这个函数得到一个字符串,并给我们每个字符有多少?
我的问题是有关1
的(length l1) + 1
,我们为什么需要它?如果你用不同的例子解释它,我真的很感激,因为这样的情况(比如+ 1)我在扫描中已经看过很多次(或者只调试agrope部分)这个功能看看它是如何工作的?
谢谢你的时间
我创建了一个数据类型,其中包含其他元素的列表
data Tarr = Tarr [Int] deriving (Show)
Run Code Online (Sandbox Code Playgroud)
我想将这些列表中的两个连接起来
Tarr [0,2,4,2] ++ Tarr [1]
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误
<interactive>:43:1:
Couldn't match expected type `[a0]' with actual type `Tarr'
Run Code Online (Sandbox Code Playgroud)
如果有(++)(Concat说)的类型类,因为有(==)(Eq)我可以实现它像
class Concat a where
(+++) :: a -> a -> a
instance Concat Tarr where
(+++) (Tarr a) (Tarr b) = Tarr (a ++ b)
Run Code Online (Sandbox Code Playgroud)
1)我该如何解决我的问题?
2)为什么(++)
没有在类型类中定义?
我完成了页面卷曲的内容.找到正确的数据并在其基础上形成以下查询.但数据属于类型IO [String]
.要求简单String
.如何转换IO [String]
为String
?
我在使用Haskell时遇到了一些麻烦.我正在寻找一个可以比较2个字符串的函数.该函数应输出一个字符串,其中包含两个字符串中的字符.
提前致谢.
我正在尝试运行以下代码,它给出了我的解析错误 ->
{- Make sure you have the hxt, url and http packages:
cabal install hxt
cabal install url
cabal install http
cabal install hxt-curl -}
import Text.XML.HXT.Core
import Network.HTTP
import Network.URI
weatherDataURL = "http://www.weather.gov/xml/current_obs/KAGC.xml"
retrieveWeatherData = do
case parseURI weatherDataURL of
Nothing -> ioError . userError $ "Invalid URL"
Just uri -> get uri
{- | Download a URL. (Left errorMessage) if an error, (Right doc) if success. -}
get uri = do
eresp <- simpleHTTP (Request uri GET …
Run Code Online (Sandbox Code Playgroud)