RPG attributes generator: Difference between revisions

m
m (→‎{{header|Haskell}}: Minor tidying)
Line 1,160:
<lang haskell>import Control.Monad (replicateM)
import System.Random (randomRIO)
import Data.Bool (bool)
import Data.List (sort)
 
Line 1,166 ⟶ 1,167:
discardUntil
(((&&) . (75 <) . sum) <*> ((2 <=) . length . filter (15 <=)))
(replicateM 6 $ sum . tail . sort <$> replicateM 4 (randomRIO (1, 6 :: Int)))
(sum . tail . sort) <$> replicateM 4 (randomRIO (1, 6 :: Int)))
 
discardUntil :: ([Int] -> Bool) -> IO [Int] -> IO [Int]
discardUntil p throw = go
where
let go =
go = throw >>= (<*>) (bool go . return) p
\x ->
if p x
then return x
else go
in go
 
-- TEST -------------------------------- TEST ---------------------------
main :: IO ()
main = replicateM 10 character >>= mapM_ (print . (sum >>= (,)))</lang>
9,655

edits