Perché il seguente codice Haskell non terminano:Perché questo codice Haskell non termina?
foldr (||) True $ repeat False -- never terminates
quando qualcosa di simile fa:
foldr (||) False $ repeat True -- => True
Per me, è la seconda espressione che sembra di essere in più problemi di non terminare. Cosa c'è che non va nella mia visione della pigra valutazione di Haskell?
è sempre possibile utilizzare stepeval per questi tipi di problemi. ci vuole un secondo per decifrare, ma può essere utile. http://bm380.user.srcf.net/cgi-bin/stepeval.cgi?expr=foldr+%28%7C%7C%29+True+%24+repeat+False – gatoatigrado
Ho scritto stepeval e non sta valutando quell'espressione correttamente! Ha alcuni bug, temo (in questo caso dimentica il 'let' anche se ne ha ancora bisogno) –