Please send questions to
st10@humboldt.edu .
true.
?- % trying to reproduce some of the mymember examples after class --
| % I must have forgotten to call protocol/1 at the beginning
| % of that session... 8-(
|
| .
ERROR: Stream user_input:0:17 Syntax error: Unexpected end of clause
?- mymember(3, [3, 6, 9]).
true ;;
false.
?- my_member(6, [3, 6, 9]).
Correct to: "mymember(6, [3, 6, 9])"? yyes
true ;;
false.
?- mymember(9, [3, 6, 9]).
true ;;
false.
?- mymember(X, [3, 6, 9]).
X = 3 ;;
X = 6 ;;
X = 9 ;;
false.
?- mymember(X, [1, 2, [3, 4, 5], 6]).
X = 1 ;;
X = 2 ;;
X = [3, 4, 5] ;;
X = 6 ;;
false.
?- mymember(1, X).
X = [1|_G842] ;;
X = [_G841, 1|_G845] ;;
X = [_G841, _G844, 1|_G848] ;;
X = [_G841, _G844, _G847, 1|_G851] ;;
X = [_G841, _G844, _G847, _G850, 1|_G854] ;;
X = [_G841, _G844, _G847, _G850, _G853, 1|_G857] ;;
X = [_G841, _G844, _G847, _G850, _G853, _G856, 1|_G860] ;;
X = [_G841, _G844, _G847, _G850, _G853, _G856, _G859, 1|_G863] ;;
X = [_G841, _G844, _G847, _G850, _G853, _G856, _G859, _G862, 1|...] ;;
X = [_G841, _G844, _G847, _G850, _G853, _G856, _G859, _G862, _G865|...] ;;
X = [_G841, _G844, _G847, _G850, _G853, _G856, _G859, _G862, _G865|...] ;;
X = [_G841, _G844, _G847, _G850, _G853, _G856, _G859, _G862, _G865|...] ;;
X = [_G841, _G844, _G847, _G850, _G853, _G856, _G859, _G862, _G865|...] ..
?- % those _G### variables are called HOLE VARIABLES... so 1 is a
| % member of ANY list starting with a 1,
| % of ANY list with a 1 as its second element,
| % of ANY list with a 1 as its third element,
| % and so on!
|
| mymember(2, [1|T]).
T = [2|_G848] ;;
T = [_G847, 2|_G851] ;;
T = [_G847, _G850, 2|_G854] ;;
T = [_G847, _G850, _G853, 2|_G857] ;;
T = [_G847, _G850, _G853, _G856, 2|_G860] ..
?- % This is so useful, there is a very-similar built-in version, member/2:
|
| listing(member/2).
lists:member(A, [A|_]).
lists:member(A, [_|B]) :-
member(A, B).
true.
?- member([1|X], [1, 2, [1, 3, 5]]).
X = [3, 5] ;;
false.
?- [1|X] = [1, 2, [1, 3, 5]].
X = [2, [1, 3, 5]].
?- halt.