
fun hlet(pair : int -> int -> (int -> int -> int) -> int) : int is
    fun hlet(Fst : int -> int -> int) : int is
        fun hlet(Snd : int -> int -> int) : int is
			   (pair (pair 10 20 Fst) (pair 1 2 Snd) Fst) -
				  (pair  5  3 Snd)
        end (fun Snd ( x1 : int ) : int -> int is
			        fun Snd ( x2 : int ) : int is
					      x2
				 	  end
			    end)
    end (fun Fst ( x1 : int ) : int -> int is
			    fun Fst ( x2 : int ) : int is
					  x1
				 end
			end)
end (fun pair ( x1 : int ) : int ->(int -> int -> int) -> int is
         fun pair ( x2 : int ) : (int -> int -> int) -> int is
				 fun pair ( which : int -> int -> int ) : int is
					  which x1 x2
             end
		   end
	  end);

