[Haskell-cafe] I really don't understand this
Jean-Marc Alliot
jm at alliot.org
Tue Jan 23 13:35:04 UTC 2018
I apologize if my question is stupid, but here is a simple Haskell
program which never stops.
However, if I comment the line (which is apparently useless):
v<-acc
The program works like a charm...
I am using GHC 8.0.2 (debian sid) and multiset 0.3.3. If anyone has an
idea, I would gladly hear it.
Thanks in advance
PS: don't try to understand what the program is doing; it is just the
reduction to a few lines of a much larger code; I have tried to find a
smaller subset which is not working "properly".
PPS: The program can also be downloaded from:
http://www.alliot.fr/tmp/example.hs
import qualified Data.IntMultiSet as IMS
b :: IMS.IntMultiSet
b = IMS.fromList ([1, 2, 3, 4])
search :: IMS.IntMultiSet -> Int -> IO Bool
search mynumbers nb = ins mynumbers (return False)
where
ins numbers acc = do
v <- acc
IMS.fold
(\x acc1 ->
let numbers2 = IMS.delete x numbers
in IMS.fold
(\y acc2 ->
let numbers3 = IMS.delete y numbers2
res = x + y
in if res == nb
then (return True)
else ins (IMS.insert res numbers3) acc2)
acc1
numbers2)
acc
numbers
main = do
v <- search b 999999999
print v
More information about the Haskell-Cafe
mailing list