Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %zad 1
- func_call(F/_/Iout, Inputs, Output) :-
- !,
- L = [F | Inputs],
- nth0(Iout, Lista, Output, L),
- Predykat =.. Lista,
- call(Predykat).
- %zad 2
- func_call(F/N, Inputs, Output) :-
- !,
- func_call(F/N/N, Inputs, Output).
- %zad 3
- :- op(700, xfx, <#).
- :- op(600, xfy, #).
- %wersja ulepszona
- Result <# Function # ArgsChain :-
- parse_args_chain(ArgsChain, Args),
- func_call(Function, Args, Result).
- parse_args_chain(H # T, [H|TArgs]) :-
- !,
- parse_args_chain(T, TArgs).
- parse_args_chain(H, [H]).
- %zad 4
- curry_call(function(Pred/N/I, List), InArg, Out) :-
- append(List, [InArg], NewList),
- ArgsExpected is N-1,
- (
- length(NewList, ArgsExpected) ->
- func_call(Pred/N/I, NewList, Out)
- ;
- Out = function(Pred/N/I, NewList)
- ).
- Result <# Function/N # Arg :-
- curry_call(function(Function/N, []), Arg, Result).
- Result <# CurryFun # Arg :-
- curry_call(CurryFun, Arg, Result).
- ZAPYTANIA:
- func_call(length/2/2, [[1,2,3]], X).
- func_call(append/3/2, [[1,2],[1,2,3,4]], X).
- func_call(length/2, [[1,2,3]], X).
- X <# append/3 # [1,2] # [3,4].
- curry_call(function(append/3/3, []), [1,2], X),
- curry_call(X, [3,4], Y).
- X <# append/3/3 # [1,2],
- Y <# X # [3,4].
Add Comment
Please, Sign In to add comment