io-monad

    1熱度

    1回答

    我在使用Scalaz IO Monad和Stream尋找在spoj.com上的「Life,the Universe,and Everything」問題的解決方案。 的問題是從輸入小數字改寫爲輸出和數字閱讀後停止處理輸入42 我創建了以下類: import scalaz._, effect._ def ReadInt: IO[Int] = IO { readInt } def Pr

    1熱度

    1回答

    我試圖寫一個簡單的函數來安全地讀取一個文件(如果存在),什麼也不做,如果該文件不存在: safeRead :: String -> IO() safeRead path = readFile path `catch` handleExists where handleExists e | isDoesNotExistError e = return() |

    1熱度

    3回答

    想象我讀通過stdin的輸入塊,看起來像這樣: 3 12 16 19 第一個數字是以下的行數。我必須通過一個函數處理這些數字,並報告由空格分隔的結果。 所以我寫了這個主要功能: main = do num <- readLn putStrLn $ intercalate " " [ show $ myFunc $ read getLine | c <- [1..n

    2熱度

    1回答

    我使用在其中一個模塊中定義的功能if'而不是內置的if-then-else構造。它是平凡的定義,工作得很好。 但是,在代碼中有一個地方需要將它應用於monad值(我的情況爲IO),即類型簽名應該看起來有點像IO Bool -> IO a -> IO a -> IO a。當然,我試圖解除它。 if' <$> mb <*> action1 <*> action2 但是,當我試圖評估表達式,我沒有得

    0熱度

    2回答

    我使用MongoDB庫來處理來自Mongodb的數據。有一個稱爲Action的Monad表示DB讀取或寫入操作https://github.com/TonyGen/mongoDB-haskell/blob/master/doc/tutorial.md。 但是,我發現當我在monad Action中時,我也想做一些必須在IO Monad中的IO。像 -- `Action' is a Monad -

    -3熱度

    3回答

    我正在做IO monad haskell中的階乘函數。 我跟着例子mod3爲了做IO monad的階乘函數。 我不明白爲什麼我的代碼是錯的。 我想看看n> = 1,然後對n進行階乘。 最後添加到(n,r2)並返回。 任何人都可以幫助理解嗎? while :: IO Bool -> IO() -> IO() while test body = do b <- test if b

    2熱度

    2回答

    我想看看我能不能做這樣的事情: 說我有一個清單:1,8,90,100,82]現在 ,我想要做的就是這樣的事情 print [8, 90, 100, 82] print [90, 100, 82] print [100, 82] print [82] 所以基本上,我想打印列表的其餘部分,直到我得到一個空列表,然後停止。有什麼方法可以在Haskell中做到這一點? 編輯:我正在尋找更一般的解

    1熱度

    1回答

    的概念,這種一元計算我描述了以下計算: import Control.Monad.State import Control.Monad.Identity import Control.Monad.Random.Class -- * fair coin fair :: MonadRandom m => m Bool fair = (\p -> p <= 0.5) <$> getRando

    3熱度

    1回答

    我有以下功能產生的字符以1024的倍數隨機字符串: import System.Random rchars :: Int -> [IO Char] rchars n = map (\_ -> randomRIO ('a', 'z')) [n | n <- [0..n]] -- a wasteful "iteration"-like func rstr :: Int -> IO Strin

    2熱度

    1回答

    這裏是一個域特定的文件IO功能我寫的摘錄: let cp :: FilePath -> IO() cp "." = putStr "" -- OUCH! cp ".." = putStr "" -- CRIKEY! cp fname = custom logic here... in mapM_ cp filepaths 我明白mapM_讓我們丟棄/忽