Type signature lacks an accompanying binding [GHC-44432]

If a type signature is given for a name, then that name also needs to be defined.

Examples

Type signature lacks an accompanying binding

If a type signature is given for a name in a local let expression, then the name also needs to be defined.

In this example, a type signature was given for the name two in a let expression, but no definition was specified. This error can be fixed by adding a definition which accompanies the type signature.

Error Message

MissingBinding.hs:6:5: error: [GHC-44432]
    The type signature for ‘two’ lacks an accompanying binding
  |
6 |     two :: Integer
  |     ^^^
MissingBinding.hs
Before
module MissingBinding where

fortytwo :: Integer
fortytwo =
  let
    two :: Integer
  in
    40 + two
After
module MissingBinding where

fortytwo :: Integer
fortytwo =
  let
    two :: Integer
    two = 2
  in
    40 + two
Type signature lacks an accompanying binding

If a type signature is given for a name in a Haskell module, then the name also needs to be defined.

In this example, a type signature was given for the name someBoolean in a Haskell module, but no definition was specified. This error can be fixed by adding a definition which accompanies the type signature.

Error Message

MissingBinding.hs:3:1: error: [GHC-44432]
    The type signature for ‘someBoolean’ lacks an accompanying binding
  |
3 | someBoolean :: Bool
  | ^^^^^^^^^^^
MissingBinding.hs
Before
module MissingBinding where

someBoolean :: Bool
After
module MissingBinding where

someBoolean :: Bool
someBoolean = True
Type signature lacks an accompanying binding

If a type signature is given for a name in a Haskell module, then the name also needs to be defined.

In this example, the programmer misspelt the name factorial. GHC helpfully suggests that fatcorial might be the intended spelling. The error can be fixed by correcting the typo.

Error Message

MissingBinding.hs:5:1: error: [GHC-44432]
    The type signature for ‘factorial’ lacks an accompanying binding
    Suggested fix: Perhaps use ‘fatcorial’ (Defined at Main.hs:6:1)
  |
5 | factorial :: Natural -> Natural
  | ^^^^^^^^^
MissingBinding.hs
Before
module MissingBinding where

import Numeric.Natural

factorial :: Natural -> Natural
fatcorial n
  | n == 0 = 1
  | otherwise = n * factorial (n - 1)
After
module MissingBinding where

import Numeric.Natural

factorial :: Natural -> Natural
factorial n
  | n == 0 = 1
  | otherwise = n * factorial (n - 1)
Type signature lacks an accompanying binding

If a type signature is given for a name in a where clause, then the name also needs to be defined.

In this example, a type signature was given for the name two in a where clause, but no definition was specified. This error can be fixed by adding a definition which accompanies the type signature.

Error Message

MissingBinding.hs:6:5: error: [GHC-44432]
    The type signature for ‘two’ lacks an accompanying binding
  |
6 |     two :: Integer
  |     ^^^
MissingBinding.hs
Before
module MissingBinding where

fortytwo :: Integer
fortytwo = 40 + two
  where
    two :: Integer
After
module MissingBinding where

fortytwo :: Integer
fortytwo = 40 + two
  where
    two :: Integer
    two = 2