Skip to content

Core Lint error from PartialTypeSignatures

Running on ghc-9.2.3, produces a Core Lint error:

{-# Options_GHC -dcore-lint #-}
{-# Language PartialTypeSignatures #-}

data Foo where
  Apply :: (x -> Int) -> x -> Foo

foo :: Foo
foo = Apply f x :: forall a. _ where

  f :: [_] -> Int
  f = length @[] @_

  x :: [_]
  x = mempty @[_]
ghci> :load ~/hs/5613.hs

[1 of 1] Compiling Main             ( /home/baldur/hs/5613.hs, interpreted )
*** Core Lint errors : in result of Desugar (before optimization) ***
/home/baldur/hs/5613.hs:8:20: warning:
    The type variable @k_a9Dn[sk:1] is out of scope
    In the RHS of foo :: Foo
    In the body of letrec with binders x_a9sr :: forall {w}. [w]
    In the body of letrec with binders f_a9sq :: forall {w}. [w] -> Int
    In the body of lambda with binder a_a9Dz :: k_a9Dn[sk:1]
    Substitution: [TCvSubst
                     In scope: InScope {}
                     Type env: []
                     Co env: []]
*** Offending Program ***
Rec {
$tcFoo :: TyCon
[LclIdX]
$tcFoo
  = TyCon
      13795410111426859749##
      2910294326838708211##
      $trModule
      (TrNameS "Foo"#)
      0#
      krep$*

$tc'Apply :: TyCon
[LclIdX]
$tc'Apply
  = TyCon
      16548517680761376676##
      14341609333725595319##
      $trModule
      (TrNameS "'Apply"#)
      1#
      $krep_a9DG

$krep_a9DI [InlPrag=[~]] :: KindRep
[LclId]
$krep_a9DI = $WKindRepVar (I# 0#)

$krep_a9DH [InlPrag=[~]] :: KindRep
[LclId]
$krep_a9DH = KindRepFun $krep_a9DI $krep_a9DJ

$krep_a9DK [InlPrag=[~]] :: KindRep
[LclId]
$krep_a9DK = KindRepFun $krep_a9DI $krep_a9DL

$krep_a9DG [InlPrag=[~]] :: KindRep
[LclId]
$krep_a9DG = KindRepFun $krep_a9DH $krep_a9DK

$krep_a9DJ [InlPrag=[~]] :: KindRep
[LclId]
$krep_a9DJ = KindRepTyConApp $tcInt ([] @KindRep)

$krep_a9DL [InlPrag=[~]] :: KindRep
[LclId]
$krep_a9DL = KindRepTyConApp $tcFoo ([] @KindRep)

$trModule :: Module
[LclIdX]
$trModule
  = Module (TrNameS "plutarch-core-0.1.0-inplace"#) (TrNameS "Main"#)

foo :: Foo
[LclIdX]
foo
  = letrec {
      x_a9sr :: forall {w}. [w]
      [LclId]
      x_a9sr
        = \ (@w_a9CP) ->
            let {
              $dMonoid_a9CV :: Monoid [w_a9CP]
              [LclId]
              $dMonoid_a9CV = $fMonoid[] @w_a9CP } in
            letrec {
              x_a9CR :: [w_a9CP]
              [LclId]
              x_a9CR = break<0>() mempty @[w_a9CP] $dMonoid_a9CV; } in
            x_a9CR; } in
    letrec {
      f_a9sq :: forall {w}. [w] -> Int
      [LclId]
      f_a9sq
        = \ (@w_a9D6) ->
            let {
              $dFoldable_a9De :: Foldable []
              [LclId]
              $dFoldable_a9De = $fFoldable[] } in
            letrec {
              f_a9D8 :: [w_a9D6] -> Int
              [LclId]
              f_a9D8 = break<1>() length @[] $dFoldable_a9De @w_a9D6; } in
            f_a9D8; } in
    break<2>(x_a9sr,f_a9sq)
    (\ (@(a_a9Dz :: k_a9Dn[sk:1])) ->
       (\ (@k_a9Dn) (@(a_a9Do :: k_a9Dn)) ->
          (\ (@x_X0) (ds_d9DO :: x_X0 -> Int) (ds_d9DP :: x_X0) ->
             Apply @x_X0 ds_d9DO ds_d9DP)
            @[Any @Type] (f_a9sq @(Any @Type)) (x_a9sr @(Any @Type)))
         @(Any @Type) @(Any @(Any @Type)))
      @(Any @k_a9Dn[sk:1])
end Rec }

*** End of Offense ***


<no location info>: error:
Compilation had errors


*** Exception: ExitFailure 1
ghci>
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information