packages feed

cybus-0.3.0.0: app/Main.hs

{-# LANGUAGE GADTs #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeApplications #-}

module Main where
--import Data.List.NonEmpty (NonEmpty(..))
--import qualified Data.List.NonEmpty as N
import qualified GHC.TypeNats as GN
import Cybus

main :: IO ()
main = putStr $ show $ mm @'[2,3,4]

tst1 :: Mat '[4,5,3] Int
tst1 = gen id

tst2 :: Mat '[4] (Mat '[5,3] Int)
tst2 = toVec (gen @'[4,5,3] id)

tst3 :: Mat (n ': n1 ': ns) a -> Mat '[n] (Mat (n1 ': ns) a)
tst3 = toVec

tst4 :: Mat2 4 7 Int
tst4 = mat2 @4 @3 [1..] `multMat` mat2 @3 @7 [1..]

tst5 :: Mat (2 ': ns) a -> Mat (1 ': ns) a
tst5 = deleteRow @2

tst6 :: FinC 1 (1 GN.+ n) => Mat (1 GN.+ n ': ns) a -> Mat (n ': ns) a
tst6 = deleteRow @1

{-
>tst3 (mm @'[2,3,4])
Vec@2 [Mat2@(3,4)
  [
     [1,2,3,4],
     [5,6,7,8],
     [9,10,11,12]
  ]
,Mat2@(3,4)
  [
     [13,14,15,16],
     [17,18,19,20],
     [21,22,23,24]
  ]
]
it :: Mat '[2] (Mat '[3, 4] Int)

>tst6 (mm @'[9,3])
Mat2@(8,3)
  [
     [4,5,6],
     [7,8,9],
     [10,11,12],
     [13,14,15],
     [16,17,18],
     [19,20,21],
     [22,23,24],
     [25,26,27]
  ]

it :: Mat '[8, 3] Int
-}