Logic course (2019-2020)

mondays 10:15-11:45, room 5440@MIMUW

Q: What is the meaning of in the second line of the code below?

Π : (A : Set) → (B : A → Set) → Set
Π A B = (a : A) → B a

A: is a type constructor in the second line. Thus, Π is a function that returns a type (Set in Agda), which happens to be a functional type. This is called type-level programming.


Q: But then what is λ (a : A) → B a?

A: The meaning of is different now. That is a function that takes an a (of type A) and returns B a. In other word, it is just B! (It could have been written λ (a : A) . B a like in logic/lambda calculus to avoid overloading , but there is never ambiguity thanks to the λ part.)