Jump to content

Função randomRIO de System.Random


crislanio_macedo
 Share

Recommended Posts

Este é um exemplo simples, mas que não está a dá certo.

Alguém poderia ajudar-me a corrigi o problema?

Prelude> :l random.hs

[1 of 1] Compiling Main ( random.hs, interpreted )

random.hs:7:1: Parse error: naked expression at top level

Failed, modules loaded: none.

Prelude>

Estou a ter dificuldades no que refere a usar a função randomRIO.

import qualified System.Random as R
main :: IO ()
main = do n <- R.randomRIO (1, 5);
          putStrLn $ "Este é o valor aleatório: " ++ show n
Link to comment
Share on other sites

Até que enfim, um contexto que queria mostrar-lhes.

Aqui segue abaixo um exemplo de randomRIO.

Me expliquem e me corrijam quanto a seguintes afirmações.

Neste dado código, o let serve para pegar um contexto puro do 'do', como o do gerou um contexto de impuro para puro (de uma saída de y m d com IO ele tirou IO).

Quanto a -> faria sentido usa-lo de que forma ? Somente quando está com o do ?ele aglutina acções!

Bom o do me obriga a ter como saída final uma acção que seja impura, no caso a última acção foi o return s que mostra este contexto impuro.

A seguinte afirmação que seque por exemplo era se eu poderia gerar um contexto puro como saída final ?

exemplo, o do faria com que 'entrasse ' na caixa uma [stringIO] e retiraria o IO e ficaria somente String(mas a último comando me obrigaria a me retornar um contexto impuro neste caso StringIO), agora eu teria como converter essa saída gerada para de StringIO para String e me retornar um contexto Puro ?

import System.Random as R
main = do
  s <- ( inputDia 0 0 0)
  putStrLn  s
  return ()
fnc :: Integer -> IO Integer
fnc m = randomRIO (1, m)
inputDia d m a = do
   d <- fnc 31
   m <- fnc 12
   a <- fnc 2014
   let s =show d ++ " de " ++
          show m ++ " de " ++
          show a
   return s
Edited by thoga31
GeSHi
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.