libera/#lisp - IRC Chatlog
Search
14:39:59
MidWit
So, it appears to be treating my value as a string rather than a number and I don't know how to correct that.
14:50:18
pjb
MidWit: you want to parse the arguments (which indeed is a list of string), into integers.
14:51:42
pjb
MidWit: for example, you could do: (defun main (&optional (args ext:*args*)) (map nil (lambda (arg) (print (factorial (parse-integer arg)))) args))
14:54:40
pjb
See https://termbin.com/7iyfe and https://www.talisman.org/~erlkonig/documents/commandname-extensions-considered-harmful/
14:55:11
pjb
MidWit: also, when you write scripts, it may be a good idea that their behavior doesn't depend on the user rc files!
14:56:10
pjb
MidWit: you didn't define the variable userput, so it's undefined behavior. Better define a main function and a local variable. (args, user-input, whatever).
14:56:30
pjb
MidWit: defining a main function let's you load the script in a lisp image, and test and debug it by calling main directly.
14:58:33
pjb
MidWit: of course, in that case you may want to disable calling main while loading it. What I do is: #!/usr/bin/clisp -norc … (defun main (…) … 0 #|or any other status code |#) #-testing (ext:quit (main ext:*args)) and in my ~/.clisprc.lisp file I put: (pushnew :testing *features*)
14:59:48
pjb
MidWit: there for when I run ./my-script the rc file is not loaded, so :testing is not in *features* so the main is called and the script exits with the returned status; but when I launch clisp and I (load "my-script") then :testing is in *features* and main and quit are not called. So I can call (main) at the REPL and debug it.
15:00:26
pjb
Add also https://termbin.com/5qar to your rc file to be able to load files beginning with #! aka scripts.
16:18:48
MidWit
Thanlks, I'll play with parse-integer, rename th scripts, and check out the newbie channel.
21:40:52
thymage
I'm having a terrible time to break down a small set of function calls into variables and then pass them into the function
21:42:41
thymage
I have a function that works as it is. But I'm trying to replace just a part of it with a parameter, and then pass the compiler.