Использование поднятого типа данных справа от => в ghci

Рассмотрим следующий код

{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE DataKinds #-}
module Test () where

type C x = x ~ 1
type family F x = r where
  F 0 = 0
  F 1 = 2
  F 2 = 4

Я пытаюсь убедить Гчи решить :kind! forall x . C x => F xв 2, Но похоже, что я могу использовать только вещи типа Type справа. =>, Есть ли способ обойти это? В частности я получаю

<interactive>:1:20: error:
    • Expected a type, but ‘F x’ has kind ‘GHC.Types.Nat’
    • In the type ‘forall x. C x => F x’

РЕДАКТИРОВАТЬ: обернуть его в прокси, кажется, не работает:

:kind! (forall x . C x => Proxy (F x))
(forall x . C x => Proxy (F x)) :: *
= C x => Proxy (F x)

0 ответов

Другие вопросы по тегам