• 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)