home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_PAS / APTERYX.ZIP / TUTOR0.LSP < prev    next >
Lisp/Scheme  |  1994-01-05  |  3KB  |  85 lines

  1. ; Copyright 1994 Apteryx Lisp Ltd
  2.  
  3. ; Use the mouse to move the cursor to the next line
  4. ; and press F4 to evaluate it. See the result in the
  5. ; LispOutput window
  6.  
  7. (+ 2 3)
  8.  
  9. ; Congratulations, you've just executed your first lisp program !
  10. ; Can you see what it did ?        (Answer: 2 + 3 = 5)
  11.  
  12. ; Here's another
  13.  
  14. (+ 2 (* 4 10))
  15.  
  16. ; * means multiply
  17.  
  18. ; (+ 2 3) is a list with 3 members - the symbol + and the numbers 2
  19. ; and 3.
  20. ; When you press F4 you evaluate the list. + is the name of a function
  21. ; and 2 and 3 are the arguments. + is applied to its arguments and
  22. ; returns a result, which for + is the sum of the arguments.
  23.  
  24. ; Similiarly (* 4 10) when evaluated returns the result of multiplying
  25. ; 4 times 10. (To see this, select the expression using the mouse
  26. ; and then press F4.)
  27.  
  28. ; In (+ 2 (* 4 10)) the second argument to the + is the list (* 4 10).
  29. ; This list argument is evaluated first, to give 40, and this result
  30. ; is then passed as the actual second argument to the function + which
  31. ; returns the result 42.
  32.  
  33. ; Here's a program that counts the number of elements in a list -
  34.  
  35. (length '(a b c d e))
  36.  
  37. ; length is a function which returns the number of elements in a list.
  38. ; The one and only argument to length is '(a b c d e). What the ' quote
  39. ; character means is don't try to evaluate this list (as was done with
  40. ; (* 4 10) in the example above), but pass it unchanged to the function.
  41. ; '(a b c d e) is an abbreviation for (quote (a b c d e)). 
  42. ; The members of (a b c d e) are a, b, c, d and e which are all symbols.
  43. ; ' is needed before list or symbol arguments that aren't meant to be
  44. ; evaluated - its optional but unnecessary before other types of argument
  45. ; For example - 
  46.  
  47. (+ '2 '3)
  48.  
  49. ; or
  50.  
  51. (+ (quote 2) (quote 3))
  52.  
  53. ; cons is a function that puts a new element onto the beginning of 
  54. ; a list.
  55. ; Evaluate the following - 
  56.  
  57. (cons 'a '(b c d e))
  58.  
  59. ; And now make your own function - here's a function that multiplies
  60. ; a number by itself
  61.  
  62. (defun square (x) (* x x)) ; F4 to make the function
  63.  
  64. (square 5)   ; F4 here to try it out
  65.  
  66. ; looking at (defun square (x) (* x x))
  67.  
  68. ; defun is the special form (not a function as such because it doesn't
  69. ; evaluate its arguments)
  70. ; square is the name of the new function
  71. ; (x) is the argument list - the symbol x represents the one and only
  72. ; argument that the function is going to take
  73. ; (* x x) is the expression that is evaluated to give the final result
  74. ; In the expression (* x x) the x's are evaluated to the value of the
  75. ; argument x passed in when square is actually used
  76. ; i.e. in (square 5) the x's evaluate to 5, and (* 5 5) is evaluated
  77. ; to give the final result.
  78.  
  79. (mapcar #'square '(1 2 3 4 5))
  80.  
  81. ; mapcar applies its first argument to each member of the list passed
  82. ; as second argument, and returns a list made from the results.
  83. ; ( #'square means the function referred to by the symbol square. )
  84.  
  85.