![]() |
![]() |
|
home—info—lectures—exams—hws—archive
- Show some industrial scheme code; - var args - syntax for calling functions in java; - prolog: append2; append3 using append2; sublist.
1 % A version of 'reverse' which requires 'removeLast' and 'last': 2 reverse([],[]). 3 reverse([F|R],L2) :- last(L2,F), removeLast(L2,L2less), reverse(R,L2less). 4 5 % removeLast, Last -- not included in notes, 6 % since it's part of hw05 !! 7 8 9 10 %% Alternate version: An accumulator variable: 11 reverse(L1,L2) :- reverseHelp( L1, [], L2 ). 12 13 %% [+,+,-] 14 %% reverseHelp(L1,L2,L3): 15 %% True when: L1 reversed, appended to L2, equals L3. 16 % First, a less idiomatic solution: 17 % reverseHelp([],RevSoFar,Soln) :- RevSoFar = Soln. 18 % reverseHelp(Lst, RevSoFar, Soln) :- 19 % Lst = [Frst,Rst], 20 % reverseHelp( Rst, [Frst,RevSoFar], Soln ). 21 22 % Here is the same thing, in idiomatic Prolog: 23 % We just move the "=" clauses into the definitions: 24 % 25 reverseHelp([], RevSoFar, RevSoFar). 26 reverseHelp([Frst|Rst], RevSoFar, Out) :- 27 reverseHelp(Rst, [Frst|RevSoFar], Out). 28 29 30 %% [+,+,-] 31 %% filterSmallerThan( Threshold, Lst, Result ): 32 %% True when 'Result' is all the elements of 'Lst' which 33 %% are less than Threshold. 34 35 % First, a less idiomatic solution: 36 % filterLessThan(Threshold,Lst,Answer) :- Lst=[], Answer=[]. 37 % filterLessThan(Threshold,Lst,Answer) :- 38 % Lst = [Frst,Rst], 39 % Frst >= Threshold, 40 % filterLessThan(Threshold,Rst,SmallRest), 41 % Answer = SmallRest. 42 % filterLessThan(Threshold,Lst,Answer) :- 43 % Lst = [Frst,Rst], 44 % Frst < Threshold, 45 % filterLessThan(Threshold,Rst,SmallRest), 46 % Answer = [Frst|SmallRest]. 47 48 % Here is the same thing, in idiomatic Prolog: 49 % We just move the "=" clauses into the definitions: 50 % 51 filterLessThan(Threshold,[],[]). 52 filterLessThan(Threshold,[Frst|Rst],SmallRest) :- 53 Frst >= Threshold, 54 filterLessThan(Threshold,Rst,SmallRest). 55 filterLessThan(Threshold,[Frst|Rst],[F|SmallRest]) :- 56 Frst < Threshold, 57 filterLessThan(Threshold,Rst,SmallRest). 58 59 |
home—info—lectures—exams—hws—archive
©2009, Ian Barland, Radford University Last modified 2009.Nov.16 (Mon) |
Please mail any suggestions (incl. typos, broken links) to ibarland ![]() |
![]() |