Do I have only two "inputs" or not?
Yes, you have two options (technically one due to how currying works).
C: info a I get: ([t1] -> t) -> [([t1] -> t) -> [t1] -> t] -> t
, [t1] -> t ( , t1 t), [([t1] -> t) -> [t1] -> t] ( , [t1] -> t t1 t), t.
, .
:
a x (b:bs) =
- , - . - , .
, , , :
x :: ?1
b :: ?2
bs :: [?2]
a :: ?1 -> [?2] -> ?3
:
a (b x) bs
b x, b , x. b x a, b x. , ?2 ?1 -> ?1 :
x :: ?1
b :: ?1 -> ?1
bs :: [?1 -> ?1]
a :: ?1 -> [?1 -> ?1] -> ?3
(b bs , b, , ):
x []
x . , , - . x [] a, x, ?3. , ?1 = [?4] -> ?3 :
a :: ([?4] -> ?3) -> [([?4] -> ?3) -> ([?4] -> ?3)] -> ?3
-> -, :
a :: ([?4] -> ?3) -> [([?4] -> ?3) -> [?4] -> ?3] -> ?3
, , , , . ?3 = t ?4 = t1, info (, , - , ).