相关疑难解决方法(0)

打开一个monad

鉴于以下计划,我遇到了与monad打交道的问题.

module Main 
where
import System.Environment
import System.Directory
import System.IO
import Text.CSV

--------------------------------------------------

exister :: String -> IO Bool
exister path = do
  fileexist <- doesFileExist path 
  direxist  <- doesDirectoryExist path
  return (fileexist || direxist )

--------------------------------------------------
slurp :: String -> IO String 
slurp path = do
  withFile path ReadMode (\handle -> do
                             contents <- hGetContents handle
                             last contents `seq` return contents )
--------------------------------------------------    
main :: IO ()
main = do
  [csv_filename] <- getArgs
  putStrLn (show csv_filename)
  csv_raw <- slurp …
Run Code Online (Sandbox Code Playgroud)

haskell

5
推荐指数
2
解决办法
3843
查看次数

将 IO 输出带到另一个纯 Haskell 函数

我是 Haskell 的新手,英语也不是我的第一语言,所以请不要因为一些错字或因为问题表述不当而对这篇文章进行评分:对我来说,这是一场真正的斗争。

无论如何:我正在尝试生成随机坐标(Int,Int),然后在另一个 Haskell 函数中使用它。但是我在将 IO 函数结果“导出”到第二个纯类型 Haskell 函数时遇到了一些问题。

这是我认为并希望正确说明我的问题的一个例子:

genRandomPair = genRandNr

genRandNr :: IO (Int,Int)
genRandNr = do
    firstRandom <- randomRIO (1,10)
    secondRandom <- randomRIO (1,10)
    return (firstRandom,secondRandom)
Run Code Online (Sandbox Code Playgroud)

如果它不明显genRandNrgenRandomPair那是我的问题。

我将非常感谢所有友好的投入。

请注意:非常高级的代码解释不会真正帮助我,因为我处于初学者水平,直到一周前从未在 Haskell 中使用过 monad 或 IO。

io haskell

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

如何从不纯的方法返回纯值

我知道它听起来一定是微不足道的,但我想知道如何从仿函数中展开一个值并将其作为纯值返回?

我试过了:

f::IO a->a
f x=(x>>=) 

f= >>=
Run Code Online (Sandbox Code Playgroud)

我应该在右侧放置什么?我不能使用,return因为它会再次包裹它.

monads haskell functor

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

标签 统计

haskell ×3

functor ×1

io ×1

monads ×1