From 0d49347cb7d910a83d7e6930f6f30935a034aa14 Mon Sep 17 00:00:00 2001 From: Logen Kain Date: Fri, 23 Jun 2017 02:16:42 -0700 Subject: [PATCH] Added lisp along with some study work --- lisp/ansi_lisp/ch2/dunno_yet.lisp | 118 +++++++++++++ lisp/ansi_lisp/ch2/problem_8/print_dots.lisp | 26 +++ lisp/ansi_lisp/ch3/notes.txt | 85 +++++++++ lisp/ansi_lisp/ch4/notes.txt | 7 + lisp/fuckery/what.lisp | 39 +++++ lisp/hello-world/hello-world.lisp | 5 + lisp/land-of-lisp/ch2/Schedule June 2017.xlsx | Bin 0 -> 182320 bytes .../ch2/guess-my-number-game.lisp | 23 +++ lisp/land-of-lisp/ch2/notes.txt | 30 ++++ lisp/land-of-lisp/ch4/notes.txt | 163 ++++++++++++++++++ 10 files changed, 496 insertions(+) create mode 100644 lisp/ansi_lisp/ch2/dunno_yet.lisp create mode 100644 lisp/ansi_lisp/ch2/problem_8/print_dots.lisp create mode 100644 lisp/ansi_lisp/ch3/notes.txt create mode 100644 lisp/ansi_lisp/ch4/notes.txt create mode 100644 lisp/fuckery/what.lisp create mode 100644 lisp/hello-world/hello-world.lisp create mode 100644 lisp/land-of-lisp/ch2/Schedule June 2017.xlsx create mode 100644 lisp/land-of-lisp/ch2/guess-my-number-game.lisp create mode 100644 lisp/land-of-lisp/ch2/notes.txt create mode 100644 lisp/land-of-lisp/ch4/notes.txt diff --git a/lisp/ansi_lisp/ch2/dunno_yet.lisp b/lisp/ansi_lisp/ch2/dunno_yet.lisp new file mode 100644 index 0000000..e6aa242 --- /dev/null +++ b/lisp/ansi_lisp/ch2/dunno_yet.lisp @@ -0,0 +1,118 @@ +;example of printing proper + +;t indicates that the output is to be sent to the default place +; normally this will be toplevel +; ~% indcates newline +; it's like printf +;(format t "~A plus ~A equals ~A.~%" 2 3 (+ 2 3)) + + +;user-input + +(defun askem (string) + (format t "~A" string) + (read)) + +;example +;(format t "You wrote: ~A ~%" (askem "What is you????? ")) + +;user-input plus variables +(defun ask-number () + (format t "Please enter a number. ") +;;;create a variable "val" to store read (first two arguments of let) + (let ((val (read))) +;;;;Now after asigning values in let, we can do expressions +;;;;Note that the variables are local to the let block +;;;;Test if val is number + (if (numberp val) + val + (ask-number)))) +;example +;(format t "~A~%" (ask-number)) + +;global variables +;The asterisks are simply a standard to show that the variable is global +(defparameter *glob* 99) + +;global constants can be declared as such +;They don't need special names because if they share the name of a variable +;it'll throw an error +(defconstant limit (+ *glob* 1)) + +;We can check if a symbol is the name of a global variable/constant like this +;(format t "~A~%" (boundp '*glob*)) +;(format t "~A~%" (boundp 'limit)) + +;The most general assignment operator is setf +(setf *glob* 98) + +(format t "~A~%" (let ((n 10)) + (setf n 2) + n)) + +;If the first arg to setf is a symbol that is not a local variable, it is +;taken to be global and thus creates one if it didn't exist already + +;Note that this is bad practice because it pisses off my linter +;also, implicit declarations are weird. +;(setf x (list 'a 'b 'c)) +;(format t "~A~%" x) + +; we could also do something like (assuming the above code has also happened) +;We can use an expression instead of a variable. In these cases the second +;argument is inserted in the place refered by the first arg +;So here: +;(setf (car x) 'n) +;We would be replacing the A in (A B C) with an N + +;You can also give any even about of arguments to setf... so...: +;(setf a b +; c d +; e f) + +;Would be equivalnt to doing three seperate setf statements + +;print out the square of the integer from start to end +;do works as (variable inital update) +;So here we have the first arg: +;;;i is set to start and then updates by 1 +;The next argumen to (do) is when the test should end and +;;;what happens after end +;The third and last argument is what's actually happening (the format list) +(defun show-squares (start end) + (do ((i start (+ i 1))) + ((> i end) 'done) + (format t "~A ~A~%" i (* i i)))) + +;Recursive version +;progn can take any number of expressions, it evaluates them in order, and +;returns the value of the last +(defun show-square-rec (i end) + (if (> i end) + 'done + (progn + (format t "~A ~A~%" i (* i i)) + (show-squares (+ i 1) end)))) + +;function that iterates through a list +;dolist takes an argument as (variable expression) followed +;by a body of expressions +(defun our-length (lst) + (let ((len 0)) + (dolist (obj lst) + (setf len (+ len 1))) + len)) + +;rec version +(defun our-length-rec (lst) + (if (null lst) + 0 + (+ (our-length (cdr lst)) 1))) + +;define function tha takes two arguments and returns the greater + +(defun is-greater (arg1 arg2) + (if (> arg1 arg2) + (format t "~A~%" arg1) + (format t "~A~%" arg2))) + diff --git a/lisp/ansi_lisp/ch2/problem_8/print_dots.lisp b/lisp/ansi_lisp/ch2/problem_8/print_dots.lisp new file mode 100644 index 0000000..b105bd3 --- /dev/null +++ b/lisp/ansi_lisp/ch2/problem_8/print_dots.lisp @@ -0,0 +1,26 @@ +;; Take a positive int and print that many dots + +;; repetition +(defun print-dots(num-of-dots) + (do ((i 0 (+ i 1))) + ((= i num-of-dots) 'done) + (format t ". "))) +;; recursion +(defun print-dots-rec(num-of-dots) + ;plusp checks if it's a positivie integer above 0.0 + (if (plusp num-of-dots) + (progn + (format t ". ") + (print-dots-rec(- num-of-dots 1))))) + +;; Take a list and return the number of times the symbol "a" occurs in it +(defun count-a-symbols(lst) + (do ((new-lst lst (cdr new-lst)) + (n 0 (+ n (if (eq (car new-lst) 'a) 1 0)))) + ((not new-lst) n))) + +;; Now do a recursive version (which is probably easier) +(defun count-a-symbols-rec(lst) + (if lst + (+ (if (eq (car lst) 'a)1 0) (count-a-symbols-rec(cdr lst))) + 1)) diff --git a/lisp/ansi_lisp/ch3/notes.txt b/lisp/ansi_lisp/ch3/notes.txt new file mode 100644 index 0000000..61c8fd6 --- /dev/null +++ b/lisp/ansi_lisp/ch3/notes.txt @@ -0,0 +1,85 @@ +(eql x y) -- Tests of it's the same object + +(setf x '(a b c)) +(setf y x) -- This will copy the poiner, so any changes to either will affect the other. + +(setf x '(a b c) + y (copy-list x)) -- This will actually create a new list (eql x y) will return nil + +(append '(a b) '(c d) '(e)) -- append lists together. Will result in a single combined list. + +(nth 0 '(a b c)) -- Find the nth element. In this cas 'A' +(nthcdr 1 '(a b c)) -- Find the nth cdr. In this case (B C) + +(zerop n) -- Checks if value is 0 +(last '(a b c)) -- Returns last cons in a list. So it'll return "(C) here +(car(last '(a b c))) -- Returns last element of a list. In this case "C" + +--first - tenth are defined as functions that are not zero indexed so for example: +(fifth '(a b c d e f g h i)) -- Will return "E" (the element, not the cons) + +(mapcar #'(lambda (x) (+ x 10)) + '(1 2 3)) -- Takes a function and applies everything in the list to it. In this case it will return (11 12 13) + +(mapcar #'list + '(a b c) + '(1 2 3 4)) -- Would return: + ((A1) (B2) (C 3)) + +(member 'b '(a b c d e)) -- (member) finds what it's looking for, and returns it as well as the cdr from that point. So here we would see "b" - "e" + +-- Keywords are a symbol preceded by a colon... so ":test" for example +-- Member defaults to testing with eql, perhaps we want equal instead: +-- NOTE: Equal is less strict than eql. Equal returns true if it's arguemnts print the same. +-- EQL only if they are the same object +(member '(a) '((a) (z)) :test #'equal) -- Will result in ((A) (Z)) + +--There is also :key +(member 'a '((a b) (c d)) :key #'car) -- will return ((A B) (C D)) -- We asked if there was an element whose car was a +-- keywords are always at the end, and multiple are acceptable. + +If we want to find an element satisfying an arbitrary predicate, like oddp, which returns true for odd ints, we can use member-if + +(member-if #'oddp '(2 3 4)) -- This will find the first odd number, 3 in this case, and return it along with the rest of the list + +(adjoin) -- conses an object into a list if it's not already a member +(adjoin 'b '(a b c)) -- (A B C) +(adjoin 'z '(a b c)) -- (Z A B C) + +(union '(a b c) '(c b s)) -- (A C B S) +(intersection '(a b c) '(b b c)) -- (B C) +(set-difference '(a b c d e) '(b e)) -- (A C D) -- So, expected stuff +-- The above creates sets, and as we know, sets have no specific order + +(length ' (a b c)) -- 3 + +-- Grab a part of a list +-- Think python slices, third argument (second number) is optional. +(subseq '(a b c d) 1 2) -- (B) +(subseq '(a b c d) 1) -- (B C D) + +(reverse '(a b c)) -- Obvious, returns (A B C) + +(subseq(reverse '(a b c)) 0 2) -- (C B) -- A way to grab the last two +(subseq(reverse '(a b c)) 1) -- (B A) -- Start with second to last and go backwards. Basically cut off the last (or however many ) element + +(sort '(0 2 1 3 8) #'>) -- (8 3 2 1 0) -- Is destructive to the origional list. Of course, < would sort in order + +(every #'oddp '(1 3 5)) -- Are they all odd? -- True +(some #'evenp '(1 2 3)) -- Are some of the even? -- True + +(every #'> '(1 3 5) '(0 2 4)) -- Think math, is every element greater than it's corresponding element so... +-- is 1 > 0? AND is 3 >2 AND is 5>4? True +If sequences are different lengths, the shortests determines how many tests are performed. + +(push x y) push object x onto the front of list y +(pop x) -- remove and return the first element of list x + +(let ((x '(a b))) + (pushnew 'c x) + (pushnew 'a x) + x) -- This will only push to "x" if the object doesn't already exist. + +-- Conses are not just for building lists, an improper list, or dotted list, can be used make a structure with two fields +(setf pair (cons 'a 'b)) -- (A . B) +-- car will return A, while cdr will return B diff --git a/lisp/ansi_lisp/ch4/notes.txt b/lisp/ansi_lisp/ch4/notes.txt new file mode 100644 index 0000000..afb3674 --- /dev/null +++ b/lisp/ansi_lisp/ch4/notes.txt @@ -0,0 +1,7 @@ +(setf arr (make-array '(2 3) :initial-element nil)) -- Makes a 2x3 array -- :initial-element is optional, the whole array is init to this value +(aref arr 0 0) -- Retrieve an array element + +(setf (aref arr 0 0) 'b) -- Set array element 00 to b + +(setf vec (make-array 4 :initial-element nil)) -- Makes a one-dimentional array known as a vector + diff --git a/lisp/fuckery/what.lisp b/lisp/fuckery/what.lisp new file mode 100644 index 0000000..b08856a --- /dev/null +++ b/lisp/fuckery/what.lisp @@ -0,0 +1,39 @@ +(defun menu () + (format t "Press \"1\" to print \"hi\" ~%") + (format t "Press \"2\" to print \"suck\" ~%") + (format t "Press \"3\" to print \"bitch\" ~%") + (format t "Press \"4\" to print \"ass\" ~%") + (format t "Press \"5\" to print \"dog\" ~%") + (format t "Press \"6\" to open htop ~%") + (format t "Press \"q\" to quit \"dog\" ~%")) + +(defun choices () + (format t "~%Please enter a number: ") + (let ((input (read-line))) + (cond + ((string= "1" input) + (format t "Hi! ~%")) + ((string= "2" input) + (format t "You Suck!~%")) + ((string= "3" input) + (format t "use a bish~%")) + ((string= "4" input) + (format t "Ass!~%")) + ((string= "5" input) + (format t "Hey there dog~%" )) + ((string= "6" input) + (shell "htop")) + ((string= "q" input) + (format t "Bye!~%")) + ((string= "menu" input) + (format t "~%") + (menu)) + (t + (format t "You failed! " ))) + (unless (string= "q" input) + (choices)))) + +(defun main () + (menu) + (choices)) +(main) diff --git a/lisp/hello-world/hello-world.lisp b/lisp/hello-world/hello-world.lisp new file mode 100644 index 0000000..ccac937 --- /dev/null +++ b/lisp/hello-world/hello-world.lisp @@ -0,0 +1,5 @@ +(defun hello-world () + (format t "hello, world")) + +;Run function +(hello-world) diff --git a/lisp/land-of-lisp/ch2/Schedule June 2017.xlsx b/lisp/land-of-lisp/ch2/Schedule June 2017.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e0073e2607a777e4cacc1ace631bed46c05ccf78 GIT binary patch literal 182320 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

9(BfUi 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 literal 0 HcmV?d00001 diff --git a/lisp/land-of-lisp/ch2/guess-my-number-game.lisp b/lisp/land-of-lisp/ch2/guess-my-number-game.lisp new file mode 100644 index 0000000..1df80f9 --- /dev/null +++ b/lisp/land-of-lisp/ch2/guess-my-number-game.lisp @@ -0,0 +1,23 @@ +(defparameter *small* 1) +(defparameter *big* 100) + +(defun guess-my-number () + ;; ash is the artithmetic shift function + ;; Halvs the sum of the limits and shortens the result + ;; ash, here, shifts the binary bits left or right (well, right in this case) + ;; Which leads to the right most binary falling off + ;; This is a binary search + (ash (+ *small* *big*) -1)) + +(defun smaller () + (setf *big* (1- (guess-my-number))) + (guess-my-number)) + +(defun bigger () + (setf *small* (1+ (guess-my-number))) + (guess-my-number)) + +(defun start-over () + (defparameter *small* 1) + (defparameter *big* 100) + (guess-my-number)) diff --git a/lisp/land-of-lisp/ch2/notes.txt b/lisp/land-of-lisp/ch2/notes.txt new file mode 100644 index 0000000..97d9a5b --- /dev/null +++ b/lisp/land-of-lisp/ch2/notes.txt @@ -0,0 +1,30 @@ +;; List of variables that are surrounded by parens + +(let ((a 5) + (b 6)) + (+ a b)) + +;; Local functions +;; It's like let. A list of functions and their descriptions, +;; followed by some stuff to do with them +(flet ((function_name (args) + ...Function Body...)) + body) +;;example +(flet ((f (n) + (+ n 10))) + (f 5)) + +>> 15 + +;; labels -- like flet, but allow functions to call other +;; defined functions or themselves +;; Same basic structure as flet + +(labels ((a (n) + (+ n 5)) + (b (n) + (+ (a n) 6))) + (b 10)) +>> 21 + diff --git a/lisp/land-of-lisp/ch4/notes.txt b/lisp/land-of-lisp/ch4/notes.txt new file mode 100644 index 0000000..94e9776 --- /dev/null +++ b/lisp/land-of-lisp/ch4/notes.txt @@ -0,0 +1,163 @@ +;(if '() +; 'i-am-true +; 'i-am-false) +;>> I-AM-FALSE +; +;(if '(1) +; 'i-am-true +; 'i-am-false) +;>> I-AM-TRUE +; +;This means empty lists are false. This significantly helps with recurison. +; +;We can take items from the front of a list and send the rest back +;(cdr) until the list is empty. + +;example: +; +;(defun my-length (list) +; (if list +; (1+ (my-length (cdr list))) +; 0)) +; +;(my-length '(list with four symbols)) + +;The empty list is the only false value in common lisp. +;Any value not equivalent to an empty list will be considered true. + +(defvar *number-was-odd* nil) + +(if (oddp 5) + (progn (setf *number-was-odd* t) + 'odd-number) + 'even-number) +;progn allows us to do extra commands in a single expression. +;nly the last evaluation in progn is returned as the value. + +;Other conditionals have implicit prgn such as when and unless + +(defvar *number-is-odd* nil) +(when (oddp 5) + (setf *number-is-odd* t) + 'odd-number) + +(unless (oddp 4) + (setf *number-is-odd* nil) + 'even-number) + +;The tradeoff is that there is no "else: with these commands. +;In those cases they just return nil and do nothing. + +;cond is sometimes considered to be the one true Lisp conditional. +;It has been around for long long time. + +(defvar *arch-enemy* nil) +(defun pudding-eater (person) + (cond ((eq person 'henry) (setf *arch-enemy* 'stupid-lisp-alien) + '(curse you lisp alien -- you ate my pudding)) + ((eq person 'johnny (setf *arch-enemy* 'useless-old-johnny) + '(i hope you choked on my pudding johnny)) + (t '(why you eat my pudding stranger ?))))) + +;Note: "eq" and "eql" Ask if the two things being compared is the same thing. +;"equal" checks to see if the two thing return the same thing +;So... something like this: + +(defun bob () + "bob") + +(let ((x "bob")) + (eq x (bob))) + +;Will return False as x's "bob" is different +;from the "bob" returned by the function +;Yet + +(let ((x "bob")) + (equal x (bob))) + +;will return true as they both end up returning the same result "bob" + +(defun pudding-eater (person) + (case person + ((henry) (setf *arch-enemy* 'stupid-lisp-alien) + '(curse you lisp alien -- you ate my pudding)) + ((johnny) (setf *arch-enemy* 'useless-old-johnny) + '(i hope you choked on my pudding johnny)) + (otherwise '(why you eat my puding stranger ?)))) + +;This is how we do cases. +;Unfortunatly, cases are only really useful in the case of matching symbols +;This is because case uses (eq) to do the comparisons. +;As noted earlier, this doesn't work well with strings. + +(and (oddp 5) (oddp 7) (oddp 9)) +;This is how we could use the (and) macro to check of three numbers are odd + +(or (oddp 4) (oddp 7) (oddp 8)) + +;This is how we can check to see if at least one of the numbers is odd. + +(or (oddp 4) (setf *is-it-even* t)) + +;This is a way we can use (or) as a conditional. +;If the first number was odd, it would never make it to the (setf) +;But, it is even so it does. +;This is called "shortcut boolean evaluation" +;This means once Lisp determines that an earlier statement +;in a list of (or) values is true, +;It doesn't bother evaluating the rest. +;Same happens with (AND) +;If a statement returns false, it doesn't bother checking the rest + +;Another example, think about saving a document: +(if *file-modified* + (if (ask-user-about-saving) + (save-file))) + +;could be rewriten as an (and) statement + +(and *file-modified* (ask-user-about-saving) (save-file)) + +;This is like asking the following +;Has the file been modified? If true then... +;Ask the user about saving, did the user's answer return true? If so, then: +; run the (save-file) function + +;And of course, the way I probably would have written it in c or something + +(if (and *file-modified* + (ask-user-about-saving)) + (save-file)) + +So basically, we could use (and) or (or) as a conditional +;and put what we want to happen at the end + +(if (member 1 '(3 4 1 5)) + 'one-is-in-the-list + 'one-is-not-in-the-list) + +>> ONE-IS-IN-THE-LIST + +;Should be obvious, but member checks if an item is in a list or not. +;It then returns that item, plus the rest of the list +;This being a non-empty list returns true, which allows are (if) conditional +;To chose the "if-True" option of the (if) +;Remember, lisp blocks only return the last thing it computes +;That's why it does not return the normal functionality of (member) +;Could be useful for games. + +;back to the (eq)/(equal)/(eql) issue... +;Conra'ds Rule of thumb for compargint Stuff: +;1. use (eq) to compare symbols +;2 use (equal) for everything else + +;Why bother with (eq) at all? Well, apprently it's faster + +;(equalp) can compare things that are mostly the same. So... +(equalp "BoB" "bob") +;will return true and: +(equalp 1 1.0) +;will also return true + +;Oh shit, chapter 5 is exciting. "Building a text game engine"