suspected bug in haskell
From
meInvent bbird@21:1/5 to
All on Wed Jul 27 19:28:28 2016
*Main> (alltrees1a!!0)
[Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [
0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [0.0,1.0,2.0,
0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])]
*Main> head (alltrees1a!!0)
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
head extract wrong
it should be
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [
0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [0.0,1.0,2.0,
0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
then i try my own function to remove outermost bracket
*Main> let { exbra :: [a] -> a; exbra [xs] = xs }
*Main>
*Main> exbra (alltrees1a!!0)
*** Exception: <interactive>:143:26-40: Non-exhaustive patterns in function exbra
got error
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
From
meInvent bbird@21:1/5 to
meInvent bbird on Thu Jul 28 00:46:03 2016
i discover again and it may not be a bug,
but error return [[Mree [Double]]]
make me think it as a bug
*Main> sum $ (eeval1 (allexprs1!!0))
<interactive>:47:16:
Couldn't match type `[Mree [Double]]' with `Mree [Double]'
Expected type: [Mree [Double]]
Actual type: [[Mree [Double]]]
In the first argument of `(!!)', namely `allexprs1'
In the first argument of `eeval1', namely `(allexprs1 !! 0)'
In the second argument of `($)', namely `(eeval1 (allexprs1 !! 0))'
eeval1 :: Mree [Double] -> [Double]
eeval1 (Meaf x) = x
eeval1 (Mode l MA r) = oplist op1 (eeval1 l) (eeval1 r)
eeval1 (Mode l MB r) = oplist op2 (eeval1 l) (eeval1 r)
eeval1 (Mode l MC r) = oplist op3 (eeval1 l) (eeval1 r)
eeval1 (Mode l MD r) = oplist op4 (eeval1 l) (eeval1 r)
eeval1 (Mode l ME r) = oplist op5 (eeval1 l) (eeval1 r)
eeval1 (Mode l MF r) = oplist op6 (eeval1 l) (eeval1 r)
eeval1 (Mode l MG r) = oplist op7 (eeval1 l) (eeval1 r)
eeval1 (Mode l MH r) = oplist op8 (eeval1 l) (eeval1 r)
On Thursday, July 28, 2016 at 10:28:34 AM UTC+8, meInvent bbird wrote:
*Main> (alltrees1a!!0)
[Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (
Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [0.0,1.
0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])]
*Main> head (alltrees1a!!0)
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
head extract wrong
it should be
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf
[0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [0.0,1.0,2.0,
0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
then i try my own function to remove outermost bracket
*Main> let { exbra :: [a] -> a; exbra [xs] = xs }
*Main>
*Main> exbra (alltrees1a!!0)
*** Exception: <interactive>:143:26-40: Non-exhaustive patterns in function exbra
got error
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
From
meInvent bbird@21:1/5 to
meInvent bbird on Thu Jul 28 00:48:51 2016
*Main> let {exbra :: [a] -> Maybe a; exbra [] = Nothing; exbra [xs] = Just xs} *Main> exbra (allexprs1!!0)
*** Exception: <interactive>:50:31-70: Non-exhaustive patterns in function exbra
still error
On Thursday, July 28, 2016 at 3:46:06 PM UTC+8, meInvent bbird wrote:
i discover again and it may not be a bug,
but error return [[Mree [Double]]]
make me think it as a bug
*Main> sum $ (eeval1 (allexprs1!!0))
<interactive>:47:16:
Couldn't match type `[Mree [Double]]' with `Mree [Double]'
Expected type: [Mree [Double]]
Actual type: [[Mree [Double]]]
In the first argument of `(!!)', namely `allexprs1'
In the first argument of `eeval1', namely `(allexprs1 !! 0)'
In the second argument of `($)', namely `(eeval1 (allexprs1 !! 0))'
eeval1 :: Mree [Double] -> [Double]
eeval1 (Meaf x) = x
eeval1 (Mode l MA r) = oplist op1 (eeval1 l) (eeval1 r)
eeval1 (Mode l MB r) = oplist op2 (eeval1 l) (eeval1 r)
eeval1 (Mode l MC r) = oplist op3 (eeval1 l) (eeval1 r)
eeval1 (Mode l MD r) = oplist op4 (eeval1 l) (eeval1 r)
eeval1 (Mode l ME r) = oplist op5 (eeval1 l) (eeval1 r)
eeval1 (Mode l MF r) = oplist op6 (eeval1 l) (eeval1 r)
eeval1 (Mode l MG r) = oplist op7 (eeval1 l) (eeval1 r)
eeval1 (Mode l MH r) = oplist op8 (eeval1 l) (eeval1 r)
On Thursday, July 28, 2016 at 10:28:34 AM UTC+8, meInvent bbird wrote:
*Main> (alltrees1a!!0)
[Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (
Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [0.0,1.
0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])]
*Main> head (alltrees1a!!0)
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
head extract wrong
it should be
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (
Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [0.0,1.
0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
then i try my own function to remove outermost bracket
*Main> let { exbra :: [a] -> a; exbra [xs] = xs }
*Main>
*Main> exbra (alltrees1a!!0)
*** Exception: <interactive>:143:26-40: Non-exhaustive patterns in function exbra
got error
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
From
meInvent bbird@21:1/5 to
meInvent bbird on Thu Jul 28 00:52:52 2016
:l trees3a.hs
let input2 mm = replicateM mm [(1,MA), (2,MB), (3,MC), (4,MD), (5,ME), (6,MF), (7,MG), (8,MH)]
let {isSorted :: (Ord a) => [(a, Operation)] -> Bool; isSorted [] = True; isSorted [x] = True; isSorted (x:y:xs) = (fst x) > (fst y) && isSorted (y:xs)}
let {doall mm = do let {input1 = input2 mm};writeFile ("logic3layer"++show(mm)++".txt") (unlines $ map show $ filter isSorted input1)}
let input1 = input2 3
let oplist = filter isSorted input1
let getoperationlist = [map snd (oplist!!i) | i <- [0..((length oplist)-1)]]
let fullytruerownum = 54
let fullytrue = 54.0
let logic3row = replicateM 3 [0.0, 1.0, 2.0]
let logic3col = [[logic3row!!i!!2 | i <- [0..(27-1)]],[logic3row!!i!!1 | i <- [0..(27-1)]],[logic3row!!i!!0 | i <- [0..(27-1)]]]
let allparams1 = replicateM 2 logic3col
let alltrees1 = [getAllTrees c | x <- allparams1, c <- [x]]
let alltrees1 nn = [getAllTreesFromList (getoperationlist!!nn) c | x <- allparams1, c <- [x]]
allexprs1 :: [ Mree [Double] ]
let {exbra :: [a] -> Maybe a; exbra [] = Nothing; exbra [xs] = Just xs}
let allexprs1 = alltrees1 40
exbra (allexprs1!!0)
getAllTrees :: [a] -> [Mree a]
getAllTrees [] = []
getAllTrees [x] = return $ Meaf x
getAllTrees xs = do
(left, right) <- splits xs
guard $ not (null left) && not (null right)
leftT <- getAllTrees left
rightT <- getAllTrees right
op <- [MA, MB, MC, MD, ME, MF, MG, MH]
return $ Mode leftT op rightT
getAllTreesFromList ys [] = []
getAllTreesFromList ys [x] = return $ Meaf x
getAllTreesFromList ys xs = do
(left, right) <- splits xs
guard $ not (null left) && not (null right)
leftT <- getAllTreesFromList ys left
rightT <- getAllTreesFromList ys right
op <- ys
return $ Mode leftT op rightT
On Thursday, July 28, 2016 at 3:48:53 PM UTC+8, meInvent bbird wrote:
*Main> let {exbra :: [a] -> Maybe a; exbra [] = Nothing; exbra [xs] = Just xs}
*Main> exbra (allexprs1!!0)
*** Exception: <interactive>:50:31-70: Non-exhaustive patterns in function exbra
still error
On Thursday, July 28, 2016 at 3:46:06 PM UTC+8, meInvent bbird wrote:
i discover again and it may not be a bug,
but error return [[Mree [Double]]]
make me think it as a bug
*Main> sum $ (eeval1 (allexprs1!!0))
<interactive>:47:16:
Couldn't match type `[Mree [Double]]' with `Mree [Double]'
Expected type: [Mree [Double]]
Actual type: [[Mree [Double]]]
In the first argument of `(!!)', namely `allexprs1'
In the first argument of `eeval1', namely `(allexprs1 !! 0)'
In the second argument of `($)', namely `(eeval1 (allexprs1 !! 0))'
eeval1 :: Mree [Double] -> [Double]
eeval1 (Meaf x) = x
eeval1 (Mode l MA r) = oplist op1 (eeval1 l) (eeval1 r)
eeval1 (Mode l MB r) = oplist op2 (eeval1 l) (eeval1 r)
eeval1 (Mode l MC r) = oplist op3 (eeval1 l) (eeval1 r)
eeval1 (Mode l MD r) = oplist op4 (eeval1 l) (eeval1 r)
eeval1 (Mode l ME r) = oplist op5 (eeval1 l) (eeval1 r)
eeval1 (Mode l MF r) = oplist op6 (eeval1 l) (eeval1 r)
eeval1 (Mode l MG r) = oplist op7 (eeval1 l) (eeval1 r)
eeval1 (Mode l MH r) = oplist op8 (eeval1 l) (eeval1 r)
On Thursday, July 28, 2016 at 10:28:34 AM UTC+8, meInvent bbird wrote:
*Main> (alltrees1a!!0)
[Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (
Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [0.0,1.
0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])]
*Main> head (alltrees1a!!0)
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
head extract wrong
it should be
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (
Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [0.0,1.
0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
then i try my own function to remove outermost bracket
*Main> let { exbra :: [a] -> a; exbra [xs] = xs }
*Main>
*Main> exbra (alltrees1a!!0)
*** Exception: <interactive>:143:26-40: Non-exhaustive patterns in function exbra
got error
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
From
meInvent bbird@21:1/5 to
meInvent bbird on Thu Jul 28 01:23:57 2016
i think the problem is this function
the goal is doing combination to fill in parameters into function structure
MH(P1, MD( P2, MC(P3, P1)))
MH(MD( P2, MC(P3, P1)), P1)
....
but it do
[MH(P1, P2), MD(P1,P2), MC(P1,P2)]
getAllTreesFromList ys [] = []
getAllTreesFromList ys [x] = return $ Meaf x
getAllTreesFromList ys xs = do
(left, right) <- splits xs
guard $ not (null left) && not (null right)
leftT <- getAllTreesFromList ys left
rightT <- getAllTreesFromList ys right
op <- ys
return $ Mode leftT op rightT
On Thursday, July 28, 2016 at 3:52:53 PM UTC+8, meInvent bbird wrote:
:l trees3a.hs
let input2 mm = replicateM mm [(1,MA), (2,MB), (3,MC), (4,MD), (5,ME), (6,MF), (7,MG), (8,MH)]
let {isSorted :: (Ord a) => [(a, Operation)] -> Bool; isSorted [] = True; isSorted [x] = True; isSorted (x:y:xs) = (fst x) > (fst y) && isSorted (y:xs)}
let {doall mm = do let {input1 = input2 mm};writeFile ("logic3layer"++show(mm)++".txt") (unlines $ map show $ filter isSorted input1)}
let input1 = input2 3
let oplist = filter isSorted input1
let getoperationlist = [map snd (oplist!!i) | i <- [0..((length oplist)-1)]]
let fullytruerownum = 54
let fullytrue = 54.0
let logic3row = replicateM 3 [0.0, 1.0, 2.0]
let logic3col = [[logic3row!!i!!2 | i <- [0..(27-1)]],[logic3row!!i!!1 | i <- [0..(27-1)]],[logic3row!!i!!0 | i <- [0..(27-1)]]]
let allparams1 = replicateM 2 logic3col
let alltrees1 = [getAllTrees c | x <- allparams1, c <- [x]]
let alltrees1 nn = [getAllTreesFromList (getoperationlist!!nn) c | x <- allparams1, c <- [x]]
allexprs1 :: [ Mree [Double] ]
let {exbra :: [a] -> Maybe a; exbra [] = Nothing; exbra [xs] = Just xs}
let allexprs1 = alltrees1 40
exbra (allexprs1!!0)
getAllTrees :: [a] -> [Mree a]
getAllTrees [] = []
getAllTrees [x] = return $ Meaf x
getAllTrees xs = do
(left, right) <- splits xs
guard $ not (null left) && not (null right)
leftT <- getAllTrees left
rightT <- getAllTrees right
op <- [MA, MB, MC, MD, ME, MF, MG, MH]
return $ Mode leftT op rightT
getAllTreesFromList ys [] = []
getAllTreesFromList ys [x] = return $ Meaf x
getAllTreesFromList ys xs = do
(left, right) <- splits xs
guard $ not (null left) && not (null right)
leftT <- getAllTreesFromList ys left
rightT <- getAllTreesFromList ys right
op <- ys
return $ Mode leftT op rightT
On Thursday, July 28, 2016 at 3:48:53 PM UTC+8, meInvent bbird wrote:
*Main> let {exbra :: [a] -> Maybe a; exbra [] = Nothing; exbra [xs] = Just xs}
*Main> exbra (allexprs1!!0)
*** Exception: <interactive>:50:31-70: Non-exhaustive patterns in function exbra
still error
On Thursday, July 28, 2016 at 3:46:06 PM UTC+8, meInvent bbird wrote:
i discover again and it may not be a bug,
but error return [[Mree [Double]]]
make me think it as a bug
*Main> sum $ (eeval1 (allexprs1!!0))
<interactive>:47:16:
Couldn't match type `[Mree [Double]]' with `Mree [Double]'
Expected type: [Mree [Double]]
Actual type: [[Mree [Double]]]
In the first argument of `(!!)', namely `allexprs1'
In the first argument of `eeval1', namely `(allexprs1 !! 0)'
In the second argument of `($)', namely `(eeval1 (allexprs1 !! 0))'
eeval1 :: Mree [Double] -> [Double]
eeval1 (Meaf x) = x
eeval1 (Mode l MA r) = oplist op1 (eeval1 l) (eeval1 r)
eeval1 (Mode l MB r) = oplist op2 (eeval1 l) (eeval1 r)
eeval1 (Mode l MC r) = oplist op3 (eeval1 l) (eeval1 r)
eeval1 (Mode l MD r) = oplist op4 (eeval1 l) (eeval1 r)
eeval1 (Mode l ME r) = oplist op5 (eeval1 l) (eeval1 r)
eeval1 (Mode l MF r) = oplist op6 (eeval1 l) (eeval1 r)
eeval1 (Mode l MG r) = oplist op7 (eeval1 l) (eeval1 r)
eeval1 (Mode l MH r) = oplist op8 (eeval1 l) (eeval1 r)
On Thursday, July 28, 2016 at 10:28:34 AM UTC+8, meInvent bbird wrote:
*Main> (alltrees1a!!0)
[Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [
0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])]
*Main> head (alltrees1a!!0)
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
head extract wrong
it should be
Mode (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MH (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode
(Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MD (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]),Mode (Meaf [0.0,1.
0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0]) MC (Meaf [0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0])
then i try my own function to remove outermost bracket
*Main> let { exbra :: [a] -> a; exbra [xs] = xs }
*Main>
*Main> exbra (alltrees1a!!0)
*** Exception: <interactive>:143:26-40: Non-exhaustive patterns in function exbra
got error
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)