
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);

