J'essaye d'écrire une fonction dans Haskell qui vérifie certaines choses et ensuite récursive en fonction d'une entrée utilisateur minimale. Pour ce faire, je pense que je dois utiliser do
blocs.Blocs `do` imbriqués dans Haskell
cip :: [Argument] -> [Argument] -> Bool -> Bool -> IO()
cip (a:args) pargs burden gameover = do
let nasko = a:pargs
putStrLn (getPremise a)
let newgraph = Carneades.mkArgGraph nasko
let newcaes = (CAES (newgraph,audience2,assStandarts))
let answer = (acceptable (mkProp (getPremise a)) newcaes)
print answer
if(answer==True)
then (cip args nasko burden gameover)
else do
print "One of the arguments is not proved. Here are the premises that need proving"
print (propsForFixing newcaes a)
print "Let's see what you have for the first Propositon"
--add an if to check if no applicable arguments.
print (argumentScanHelp (head (propsForFixing newcaes a)) args)
print "\n Would you like me to apply the firt one? Y/N"
choice <- getLine
if(choice=="Y") then do print "applying the argument"
let applicabee = head (argumentScanHelp (head (propsForFixing newcaes a)) args)
print "Argument targeted"
let newargs = delete applicabee args
let newpargs = applicabee:nasko
print "Argument applied sucsessfuly. Recusing again"
(cip newargs newpargs burden gameover)
return()
Il blesse mes yeux juste en regardant, mais c'est do
blocs pour vous. Tout jusqu'à la troisième do
bloc est correct. Mais sur cette ligne:
if(choice=="Y") then do print "applying the argument"
let applicabee = head (argumentScanHelp (head (propsForFixing newcaes a)) args)
Le complier se met à pleurer:
Main.hs:209:73: parse error on input `let'
essayé toutes sortes de indentations, mais je ne peux pas sembler le faire fonctionner. Je ne veux pas utiliser de fonctions séparées, car cela signifie que je devrai passer beaucoup d'arguments en permanence.
Quelqu'un peut-il m'aider à bien faire les choses? Vous souhaitez obtenir plus d'informations concernant les blocages do
qui pourraient vous intéresser?
'if (answer == True)' est la même chose que 'if answer' – amindfv