我有以下问题:给出一个[String]和String->IO Int.所以我可以进行转换(地图)并获得[IO Int].现在,我必须做两件事 - 从行动起,直到结果是积极的,我需要知道,所有列表都被处理了.在第一次非正面结果后我被禁止处理.
takeWhileM不回答第二个问题(长度比较太不切实际),并且spanM禁止执行IO.
当然,我自己也可以编写递归函数,但我希望以Haskell的方式完成它,具有所有优良的高阶函数.
建议?可能完全使用另一种方法?上面的任务是我的项目中的一个简单任务.
我有以下代码:
import System.Environment
import System.Directory
import System.IO
import Data.List
dispatch :: [(String, [String] -> IO ())]
dispatch = [ ("add", add)
, ("view", view)
, ("remove", remove)
, ("bump", bump)
]
main = do
(command:args) <- getArgs
let result = lookup command dispatch
if result == Nothing then
errorExit
else do
let (Just action) = result
action args
errorExit :: IO ()
errorExit = do
putStrLn "Incorrect command"
add :: [String] -> IO ()
add [fileName, todoItem] = appendFile fileName …Run Code Online (Sandbox Code Playgroud) 有没有办法在Xml语句上定义相等,这三个是相同的(忽略空格,参数和标签顺序)?
1:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<url>http://maven.apache.org</url>
</project>
Run Code Online (Sandbox Code Playgroud)
2:
<project>
<modelVersion>4.0.0</modelVersion>
<url>http://maven.apache.org</url>
<groupId>com</groupId>
</project>
Run Code Online (Sandbox Code Playgroud)
3:
<project>
<modelVersion>4.0.0</modelVersion>
<url>http://maven.apache.org</url>
<groupId>com</groupId>
</project>
Run Code Online (Sandbox Code Playgroud)
此外,xml-conduit也不可用,因为Element包含所有节点元素List.它对空白也很敏感.
有许多图书馆一起工作xml,包括HXT但很难找到有用的东西.
我正在尝试构建freeglut,我只想调试一个bash脚本选项,我需要找出具体-I和-Lgcc编译器选项的功能.我不应该经历10,000条令人讨厌的文字.
我刚刚尝试了以下内容
man gcc | cat > gcc.txt
grep "-I" gcc.txt
Run Code Online (Sandbox Code Playgroud) 我注意到Haskell Win32 api没有SetForegroundWindow函数,我在haskell中不够熟练,我自己添加了这个功能.有没有办法使用haskell复制这个或者有没有人使用ffi制作自己的包装器?
让我们定义一个collapse坍塌的任何可能嵌套函数Maybe (Maybe (... a)...)来Maybe a:
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE IncoherentInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoOverlappingInstances #-}
{-# LANGUAGE TypeFamilies #-}
module MaybeCollapsable where
class M a b where
collapse :: Maybe a -> Maybe b
instance (a ~ b) => M a b where
collapse = id
instance M a b => M (Maybe a) b where
collapse Nothing = Nothing
collapse (Just a) = collapse a
Run Code Online (Sandbox Code Playgroud)
它运作良好
> …Run Code Online (Sandbox Code Playgroud) 假设有一个type r = {A : int; B : string; C : int; D : string}和一些值:
let aOptional : int option = ...
let bOptional : string option = ...
let cOptional : int option = ...
let dOptional : string option = ...
Run Code Online (Sandbox Code Playgroud)
如何r optional从他们的eleganlty(没有嵌套的案件等)构建?
顺便说一下,这是如何在haskell中完成的Control.Applicative:
data R = R { a :: Integer, b :: String, c :: Integer, d :: String}
R <$> aOptional <*> bOptional <*> cOptional <*> dOptional :: Maybe …Run Code Online (Sandbox Code Playgroud) 好吧,我正在做一个问题,我使用的函数有一个严格的变量.我有一个使用数组来解决这个问题的想法.所以我想到使用与我正在创建的函数具有相同刚性变量的数组,但我不知道如何使用刚性变量创建数组.我试过以下的东西,但没有效果:
rearrange :: [Int] -> [a] -> [a]
rearrange l la = elems (f 1 posarr)
where
b = length l
listarr :: Array Int Int
listarr = listArray (1,b) l
arra :: Array Int c
arra = listArray (1,b) la
posarr :: Array Int c
posarr = listArray (1,b) la
f i posarr
| (b < i) = posarr
| otherwise = f (i+1) (posarr // [(listarr!i,arra!i)] )
Run Code Online (Sandbox Code Playgroud)
我得到的错误是严格的变量.有什么可能的解决方案?请给出如何使用刚性变量制作数组的想法,例如我使用的以下函数中的变量
通常当我创建函数时,我不知道在哪些函数中使用类型类(等等)更好Eq,Integral因为有时候不需要像以下那样使用它们:
factorial :: Int -> Int
bla bla bla
bla bla bla
Run Code Online (Sandbox Code Playgroud)
和
factorial :: (Integral a) => a -> a
bla bla bla
bla bla bla
Run Code Online (Sandbox Code Playgroud)
我相信第二个只是花时间和地点但是在elem函数中写入是很重要的Eq(下面elleme是elem)
elemme :: Eq a => a -> [a] -> Bool
y `elemme` [] = False
y `elemme` (x:xs) = if y == x then True else y `elemme` xs
Run Code Online (Sandbox Code Playgroud)
请告诉我一些事情.谢谢.
我想写一个这样的函数:
updateMatrix:: [[a]] -> a -> (x, y) ->[[a]]
Run Code Online (Sandbox Code Playgroud)
这应该包含一系列列表,例如:
[ [1, 2, 3, 4],
[5, 6, 7, 8]]
Run Code Online (Sandbox Code Playgroud)
并将给定元素放在指定的坐标处,因此,给出:
[ [1, 2, 3, 4],
[5, 6, 7, 8]] 9 (0, 1)
Run Code Online (Sandbox Code Playgroud)
它应该回来
[ [1, 9, 3, 4],
[5, 6, 7, 8]]
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何在不重建整个矩阵的情况下做到这一点,请帮忙!