Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Give an additional example in Basics/Polymorphism #15

Open
DanielRrr opened this issue Jun 23, 2023 · 0 comments
Open

Give an additional example in Basics/Polymorphism #15

DanielRrr opened this issue Jun 23, 2023 · 0 comments

Comments

@DanielRrr
Copy link

This part of the tutorial explains Pi-types basically. There is a basic example of Pi type \Pi (b : Bool) -> if b Nat Bool. Most of the examples in the section with Basics are supported by their counterparts in Haskell. I would give a Haskell counterpart of \Pi (b : Bool) -> if b Nat Bool as well to emphasise how dependently typed languages relief dealing with type-level stuff. It could be of help (for a Haskell part of the potential audience) in making a difference between Haskell and Arend stressing that dependent types in Arend are proper.

\Pi (b : Bool) -> if b Nat Bool could be translated via type families and the language extension call DataKinds.

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}

import Data.Kind (Type)

type family Foo (b :: Bool) :: Type where
  Foo 'True = Nat
  Foo 'False = Bool
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant