open import Agda.Builtin.Nat using (Nat; _+_)
swapF : ∀ {A B : Set} → (A → A → B) → (A → A → B)
swapF f x y = f y x
testSwapAdd : Nat
testSwapAdd = swapF _+_ 40 2
testSwapAdd2 : Nat → Nat
testSwapAdd2 x = swapF _+_ x 2
testSwapSwap : Nat
testSwapSwap = swapF (swapF _+_) 40 2
add3 : Nat → Nat → (Nat → Nat)
add3 x y = λ z → x + y + z
testSwapAdd3 : Nat
testSwapAdd3 = swapF add3 40 1 1
testSwapSwap3 : Nat
testSwapSwap3 = swapF (swapF add3) 40 1 1
open import Agda.Builtin.Nat
test : Nat
test
= testSwapAdd
+ testSwapAdd2 40
+ testSwapSwap
+ testSwapAdd3
+ testSwapSwap3
{-# COMPILE AGDA2LAMBOX test #-}
Debug λ☐ Rocq ↪
WASM C OCaml CakeML Rust Elm