小编unf*_*ldr的帖子

Haskell,GADTs和-fwarn-incomplete-patterns

我正试图用Haskell来获取GADT的概念,并试图遵循Peano Number的情况,

{-# LANGUAGE GADTs, KindSignatures, DataKinds #-}
module Data.GADTTest where

data Height = Zero | Inc Height deriving (Show, Eq)

data TestGADT :: Height -> * where
    TypeCons1 :: TestGADT Zero
    TypeCons2 :: Int -> TestGADT h -> TestGADT (Inc h)

testFunc :: TestGADT h -> TestGADT h -> Int
testFunc TypeCons1 TypeCons1            = 1
testFunc (TypeCons2 {}) (TypeCons2 {})  = 2
Run Code Online (Sandbox Code Playgroud)

但是,我发现当我使用-fwarn-incomplete-patterns标志(GHC-7.6.3)编译它时,它给了我以下警告,即使所有可能的模式都已满足:

Pattern match(es) are non-exhaustive
    In an equation for `testFunc':
        Patterns not matched:
            TypeCons1 (TypeCons2 …
Run Code Online (Sandbox Code Playgroud)

haskell gadt

6
推荐指数
1
解决办法
247
查看次数

标签 统计

gadt ×1

haskell ×1