Paradygmaty programowania/Ćwiczenia 8: U podstaw programowania funkcyjnego — rachunek lambda

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Zadanie 1

Napisz termy reprezentujące następujące funkcje:

  • 𝒪(n1,...,nm)=0
  • 𝒮(x)=x+1
  • in(n1,...,nm)=ni.
Wskazówka:

Zadanie 2

Napisz termy definiujące funkcję kodującą parę liczb oraz funkcje rozkodowujące.

Wskazówka:

Zadanie 3

Niech funkcje h oraz g1,...,gm będą lambda definiowalne odpowiednio przez termy H, G1, ..., Gm, a jednoargumentowa funkcja t przez term T. Napisz termy reprezentujące funkcje:

  • f1(n1,...,nk)=h(g1(n1,...,nk),...,gm(n1,...,nk))
  • f2(x,n)=t(n)(x).
Wskazówka:

Zadanie 4

Napisz term reprezentujący funkcję f(n)=n!.

Wskazówka:

Zadanie 5

Napisz term reprezentujący funkcję Fibonacciego:


f(0)=1f(1)=1f(n+1)=f(n)+f(n1)
Wskazówka:

Zadanie 6

Jakiego typu są poniższe termy:

  • λx:αβ.λy:α.xy
  • λx:(αα)β.x(λy:α.y)
  • λx:α(βbeta).λy:α.xy

Zadanie 7

Podaj przykładowe termy (jeśli takowe istnieją) dla poniższych typów.

  • αβ
  • (α(αα))α
  • (αβ)(αα)
  • α(αβ)
  • ((αβ)β)α