Copenhagen_Bram has quit [Ping timeout: 240 seconds]
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
Copenhagen_Bram has joined #lisp
Oladon has quit [Quit: Leaving.]
csgator has joined #lisp
ebrasca has joined #lisp
dddddd has quit [Remote host closed the connection]
captgector has quit [Ping timeout: 244 seconds]
captgector has joined #lisp
Oladon has joined #lisp
<beach>
Good morning everyone!
<csgator>
hi all, I am a young programmer and I want to learn lisp as a hobby project because I read about it in paul graham's book hackers and painters. The way he describes lisp it seems to be the holy grail of languages , what do you guys think does learning lisp make you a better programmer ?
<beach>
Of course.
<beach>
This is a channel dedicated to Common Lisp, so many of us are convinced about that.
<csgator>
haha fair point. I just want to know as an outsider why you guys think lisp is so good ?
<beach>
Because it has many more and better features than most languages.
<beach>
Like the best object system around, for instance.
<beach>
And homoiconicity makes it possible to write sane syntactic extensions.
<no-defun-allowed>
morning beach
<beach>
Hey no-defun-allowed.
housel has joined #lisp
<no-defun-allowed>
learning lisp made my datefriend think about other languages weird, and they told me they couldn't stand C++ after. it likely will make you hate every other language on the planet but hey go for it.
fikka has joined #lisp
<beach>
csgator: The condition system is also quite good. Much better than the exception feature of languages like Java.
<no-defun-allowed>
the OOP system is also better than java
<csgator>
so noob question here : let's say I want to build a REST API can I do it in lisp ? does it have enough libraries to do anything one would require in a normal application building ? what I am trying to ask maybe is can I use it to build stuff ? I am convinced that programming languages are increasingly becoming more lisp like
<beach>
Oh, sure, if you compare to a language without automatic memory management, Common Lisp looks even better. But most sane languages these days have that.
<no-defun-allowed>
the runtime is better than java
<beach>
csgator: Not my domain of expertise, but I am pretty sure there are libraries for that. Other languages won't become Common Lisp until they also look like it, and then they might as well *be* Common Lisp.
<no-defun-allowed>
not sure about REST specifically but there's more than one web framework
<csgator>
so what do you guys use lisp for ? just trying to gather info on where it is being used :)
<beach>
csgator: It is trues that for *almost* every feature of Common Lisp, you will find some language that has it. But you won't find a language other than Common Lisp that combines all those features.
<no-defun-allowed>
i use hunchentoot but caveman2 is also an option (if you can mind the god awful Python @tagging things)
<csgator>
beach : that is exactly the point paul graham mentions in his book which made me wonder, why is the software world going backward and if so why even bother with a fancy new language every year, we could just use lisp for everything
fikka has quit [Ping timeout: 260 seconds]
<beach>
csgator: Because there are strong psychological forces at work. People are not rational and they are willing to waste arbitrary amounts of time not to learn Common Lisp.
<beach>
csgator: There is an entire domain now called "behavioral economics" that will explain such behavior.
<no-defun-allowed>
still they don't quite get why we avoid SETF and friends when possible in lisps but they know a lot of CL and scheme
Pixel_Outlaw has joined #lisp
<beach>
csgator: And when I say "strong", it's a serious understatement.
<no-defun-allowed>
i said it's easier to analyse since SETF can set whatever but they say understanding functional code is hard already
<csgator>
beach: got your point, thanks. I am going to spend the next few weeks learning lisp just for the fun of it and also because many smart people I know have suggested learning lisp. I'll be using this channel to get help when stuck
quazimodo has quit [Ping timeout: 240 seconds]
<beach>
csgator: Great! There is also #clschool for more basic questions.
<csgator>
that essay is so true
<beach>
Thanks!
steiner has joined #lisp
gitfaf has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 260 seconds]
gitfaf has joined #lisp
Pixel_Outlaw has quit [Quit: Leaving]
FreeBirdLjj has joined #lisp
asarch has quit [Remote host closed the connection]
asarch has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
jack_rabbit has joined #lisp
FreeBirdLjj has joined #lisp
captgector has quit [Remote host closed the connection]
captgector has joined #lisp
gitfaf has quit []
gitfaf has joined #lisp
gitfaf has quit [Client Quit]
pjb has quit [Remote host closed the connection]
pjb has joined #lisp
pjb has quit [Read error: Connection reset by peer]
<Shinmera>
csgator: As for REST APIs, of course you can do that with Lisp. There's plenty of websites and services, both hobby and professional, running Lisp on the web.
<csgator>
Shinmera : Thanks!
csgator has quit [Ping timeout: 252 seconds]
pjb has quit [Remote host closed the connection]
pjb has joined #lisp
buffergn0me has quit [Ping timeout: 265 seconds]
Oddity has quit [Ping timeout: 276 seconds]
Oddity has joined #lisp
fikka has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
doubledup has joined #lisp
doubledup has quit [Max SendQ exceeded]
doubledup has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
zxcvz has joined #lisp
graphene has quit [Remote host closed the connection]
graphene has joined #lisp
rozenglass has joined #lisp
Oladon has quit [Quit: Leaving.]
charh has quit [Ping timeout: 272 seconds]
asarch has quit [Quit: Leaving]
rippa has joined #lisp
FreeBirdLjj has joined #lisp
zfree has joined #lisp
graphene has quit [Remote host closed the connection]
graphene has joined #lisp
emacsomancer has quit [Ping timeout: 240 seconds]
zfree has quit [Quit: zfree]
shka_ has joined #lisp
rogersm has joined #lisp
zfree has joined #lisp
zfree has quit [Client Quit]
bars0 has joined #lisp
kerrhau has quit [Ping timeout: 244 seconds]
dented42 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
pjb has quit [Remote host closed the connection]
pjb has joined #lisp
fikka has joined #lisp
wiselord has quit [Ping timeout: 240 seconds]
graphene has quit [Remote host closed the connection]
graphene has joined #lisp
pjb has quit [Remote host closed the connection]
Fare has joined #lisp
pjb has joined #lisp
fikka has quit [Ping timeout: 244 seconds]
graphene has quit [Remote host closed the connection]
t3hyoshi has joined #lisp
graphene has joined #lisp
azimut has joined #lisp
azimut_ has quit [Ping timeout: 240 seconds]
cage_ has joined #lisp
pjb has quit [Ping timeout: 256 seconds]
quazimodo has joined #lisp
quazimodo has quit [Ping timeout: 244 seconds]
quazimodo has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
rozenglass has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #lisp
rumbler31 has joined #lisp
rumbler31 has quit [Ping timeout: 268 seconds]
robotoad has quit [Quit: robotoad]
rozenglass has joined #lisp
void_pointer has joined #lisp
robotoad has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
random-nickname has joined #lisp
varjagg has joined #lisp
<void_pointer>
Out of SBCL, CCL, and ECL; which implementation is generally the strictest with requiring code to conform to the ANSI spec?
random-nickname is now known as random-nick
rogersm has quit [Read error: Connection reset by peer]
rogersm has joined #lisp
<no-defun-allowed>
SBCL likes complaining about it if you don't comply.
dddddd has joined #lisp
FreeBirdLjj has joined #lisp
<Shinmera>
void_pointer: What do you hope to determine with that information?
<jackdaniel>
I think that both CLISP and SBCL have a "strict ansi mode", but you'd have to verify that
<Shinmera>
Even if your code conforms to the ANSI spec doesn't mean it'll be portable for instance
<Shinmera>
Unless you eschew all parts that are defined as implementation dependant (pathnames, etc)
<jackdaniel>
it is a one tailed test, which may bring to your attention parts of code which could be improved (not always of course)
<void_pointer>
Well, my code won't be completely portable, but it tells me a bit of where to focus my testing activities since that would be where I would run into more of my ameteurish mistakes in writing valid common lisp code (things like assigning an incorrectly typed value to a slot)
<void_pointer>
The pathname issue is one of the big items, sadly
<void_pointer>
That and the implementation has to have FFI
<Shinmera>
SBCL is very anal about some details of CL, so probably your best bet for that
<void_pointer>
I've caught quite a few mistakes by making (safety 3) in all my code, but I suspect I have a lot more just basic mistakes in writing common lisp, let alone all the bugs from just misuing things, misdone algorithms, and other sorts of bugs that of course would not be caught by such means
<void_pointer>
Shinmera: that is good to know about SBCL
<void_pointer>
it is the sort of thing I am looking for
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 260 seconds]
<void_pointer>
Thank you Shinmera and jackdaniel
<void_pointer>
jackdaniel: just checked. Clisp does have such mode it looks like. SBCL doesn't appear to in the current version, though
<void_pointer>
sadly, I can't do testing in clisp due to issue with CFFI (same goes for abcl)
<Shinmera>
Clisp's mode is not really about checking your code as far as I understand, but rather about the implementation being ANSI compliant rather than doing its own (historical) divergences
igemnace has quit [Remote host closed the connection]
kajo has quit [Ping timeout: 276 seconds]
<void_pointer>
okay
<void_pointer>
I'm still rather new to common lisp. Only been doing it seriously since December or January (the little bit I did back in 2012 or 2013 doesn't really count)
<void_pointer>
and I came to it from scheme
<LdBeth>
void_pointer: do you intends to use CL on specific problems or as a general programming language?
<void_pointer>
Currently working on a project in one domain but hope to use CL for more general stuff later. But have ended up having to do more general stuff than originally planned hacking one of my project's dependencies as well as quicklisp itself
<void_pointer>
I will admit that CL isn't the ideal choice for the domain due to not having the widest range of library choices, but that is something I am OK with (have to spend more time writing various missing pieces or working around a choice that while possibly good isn't quite a perfect fit)
<Shinmera>
Tell me about it
<beach>
void_pointer: What's the domain? (You may have mentioned it, but if so I missed it).
<void_pointer>
game programming
<LdBeth>
GG
<beach>
You may want to chat with the people in #lispgames.
<void_pointer>
I do from time to time
<beach>
OK.
<void_pointer>
though mostly, my questions so far are not game programming specific for the most part (only had the one question with respect to SDL2 that one time)
random-nick has quit [Ping timeout: 240 seconds]
gpiero_ is now known as gpiero
<beach>
Good, that increases the number of people who might be able to answer the questions.
<LdBeth>
how's the computer players' logic usually implemented? My specific interests is on how to make decisions in a typical game like "go fish". No needs to be detailed but plz give a general idea.
<Shinmera>
LdBeth: PAIP has a chapter on writing game AI
<no-defun-allowed>
Goodnight everybody!
<no-defun-allowed>
There's minimax for two player games.
<void_pointer>
yes, though one has to be careful for some games or you can easily make in invincible AI
<void_pointer>
and for others, one has to think of a reasonable depth and use some heuristics like with chess
<no-defun-allowed>
If the amount of moves into some amount of time is relatively small (can fit into memory), minimax should work.
<no-defun-allowed>
Go is one game which is not relatively small. Go boards are big.
<void_pointer>
and for a weak AI, one can make one that just randomly chooses one of the available moves
<void_pointer>
Go requires tricks
<beach>
no-defun-allowed: "number" of moves. Number of things, amount of stuff.
<jackdaniel>
sjl had a very good presentation at ELS about heuristics used in games for AI (it was based on monte carlo I think)
<void_pointer>
I don't know them. My guess is that they probably reduce the parameter space considerably by primarily focusing only on tiles bordering a piece already
<no-defun-allowed>
beach: it's 9:45pm and my melatonin pills should be working now. My English gets increasingly horrid as t increases.
<beach>
no-defun-allowed: Sleep well.
shka_ has quit [Ping timeout: 240 seconds]
<LdBeth>
be off
<no-defun-allowed>
Thankyou.
<LdBeth>
Will back later
<LdBeth>
#'no-defun-allowed: good night
<no-defun-allowed>
Nighty night, LdBeth and beach.
<no-defun-allowed>
May all your lists be proper.
cage_ has quit [Ping timeout: 244 seconds]
rogersm has quit [Read error: Connection reset by peer]
rogersm has joined #lisp
nanoz has joined #lisp
random-nick has joined #lisp
Kundry_Wag has joined #lisp
<void_pointer>
Oh, interesting thing that people might be interested in. I modified my version of quicklisp to actually check the md5sums of the package tarballs it downloads and well, if there is anyone between me and the quicklisp server that is diverting tarball requests, they are at least bothering to tamper them in a way that preserves both the filesize and the md5sum despite the latter not being checked yet.
rumbler31 has joined #lisp
nowhereman_ has quit [Ping timeout: 240 seconds]
<void_pointer>
Unfortunately, I realize that my modifications are really ugly and I haven't been able to get a SHA1 check in there yet
Kundry_Wag has quit [Ping timeout: 240 seconds]
<Shinmera>
Xach is working on pgp signing and verification, if I remember correctly
rumbler31 has quit [Ping timeout: 272 seconds]
<void_pointer>
I remember hearing about that. Fundamentally for base level, the PGP signing and verification primarily has to be done for the client and dist updates as long as the dists themselves has sufficient hash information to verify the integrity of the downloads
smokeink has joined #lisp
<void_pointer>
Right now, the dists have file size, md5sum, and sha1 sum of the contents (it isn't the sha1sum of the tgz or the uncompressed tar but something else)
<void_pointer>
which, if checked, would be safe enough for now. Making a file with a desired sha1sum isn't yet known to be doable, but it isn't that far away. md5sum is trivial. But all three combined is a bit harder than any one of them individually
nowhereman_ has joined #lisp
<Shinmera>
sha1 was been broken last year, if I remember correctly
<Shinmera>
*-been
<void_pointer>
that was only a partial break
<void_pointer>
it is possible to generate two files with the same sha1 when one can modify both files as one sees fit
<Shinmera>
Anyway, just gotta wait for Xach to roll out the QL goodie
<void_pointer>
which is a lot easier than generating a file with a specific sha1 value
<Shinmera>
s
<void_pointer>
I do look forward to it
<void_pointer>
right now, I just go through quicklisp-projects and find the original source for each package I want and git clone (or download if they use something else) into local-packages
<void_pointer>
if the dists added sha3 of the tgz file, it would be pretty set (especially since there is some CL sha3 code with few dependencies out there)
<Shinmera>
cloning into local packages is not a very smart ideas since the projects might depend on specific versions between each other.
<Shinmera>
christ I'm typoing a lot today
<jackdaniel>
must be melatonine
<jackdaniel>
s/ine/in/
<void_pointer>
that sometimes happens
<void_pointer>
haven't run into that too much yet (it will get really ugly as soon as I need something that incidentally needs one xml package)
<void_pointer>
another alternative is just to just take the http links that quicklisp would download and then use wget or curl to download the https version
<void_pointer>
did that with a few
<Shinmera>
Another alternative is to stop worrying
<Demosthenex>
oh, you had that cl-charms mcclim writeup. nice! i'm looking forward to your mcclim charms backend ;]
<jackdaniel>
right now I'm stuck on patterns (and consequency in framebuffer renderer)
<jackdaniel>
thanks
<jackdaniel>
I want to write it, because it will expose many weird corner-cases
<jackdaniel>
wrt displays with different units
<jackdaniel>
(1] terminal "pixels" are not rectangular, 2] they are very big)
smokeink has quit [Remote host closed the connection]
smokeink has joined #lisp
smokeink has quit [Remote host closed the connection]
<Demosthenex>
true
<Demosthenex>
i've been looking for a TUI library for simple things... i recall using turbovision ages ago and can't seem to find anything like it
<Demosthenex>
but something you said in that article about "making 1/10th of clim in text" rings true...
<jackdaniel>
it was a pun at greenspoon's tenth rule :-)
<jackdaniel>
" Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. "
<Demosthenex>
that's true, but it also highlights the different between having curses level control (ala charms), vs a real UI library with event loops, widgets, and screen controls.
<Demosthenex>
i find it uniquely weird that something as simple as an AS/400 style full screen form should have zero open libraries nowadays
<jackdaniel>
from other fun useless things I want to do is adding libcaca extension to that charming-clim backend
orivej has joined #lisp
<jackdaniel>
so one could "render" pictures and other patterns to some extent
<jackdaniel>
but not sure if I'll find enough time for such toy
random-nick has quit [Read error: Connection reset by peer]
random-nick has joined #lisp
<void_pointer>
Has anyone written a lisp implementation in Fortran yet?
<void_pointer>
Referring back to the greenspun mention
nowhereman_ has quit [Ping timeout: 276 seconds]
quazimodo has quit [Ping timeout: 276 seconds]
atgreen has quit [Ping timeout: 272 seconds]
Kundry_Wag has joined #lisp
<LdBeth>
of cause there should be one
Josh_2 has quit [Ping timeout: 260 seconds]
<void_pointer>
if for no other reason that to implement the second oldest language family in the oldest
Kundry_Wag has quit [Ping timeout: 272 seconds]
<LdBeth>
Early ALGOL's are on top of FORTRAN
<void_pointer>
Should be fairly easy to implement lisp 1.5 in fortran 95 or newer with no limitations other than available RAM. Fortran 77 would, if completely conformant, have a fixed at compile time limit on the number of conses
gpiero has quit [Ping timeout: 240 seconds]
gpiero has joined #lisp
<beach>
void_pointer: Yes, in fact, the first Lisp system I used was an implementation of Interlisp in Fortran.
fikka has joined #lisp
Oladon has joined #lisp
<void_pointer>
oh, cool
slyrus1 has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
Bike has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
shka_ has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
renzhi has quit [Ping timeout: 265 seconds]
ebrasca has quit [Ping timeout: 244 seconds]
ebrasca has joined #lisp
fikka has quit [Ping timeout: 276 seconds]
fikka has joined #lisp
fikka has quit [Ping timeout: 272 seconds]
undulate has joined #lisp
renzhi has joined #lisp
jmercouris has joined #lisp
SaganMan is now known as blackadder
Fare has quit [Ping timeout: 244 seconds]
nanozz has joined #lisp
nanoz has quit [Ping timeout: 276 seconds]
pedh has quit [Quit: Connection closed for inactivity]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 268 seconds]
jmercouris has quit [Remote host closed the connection]
fikka has joined #lisp
asarch has joined #lisp
jack_rabbit has quit [Ping timeout: 272 seconds]
pjb has joined #lisp
robotoad has quit [Ping timeout: 244 seconds]
fikka has quit [Ping timeout: 244 seconds]
jack_rabbit has joined #lisp
zxcvz has quit [Quit: zxcvz]
zxcvz has joined #lisp
sjl has joined #lisp
TMA has quit [*.net *.split]
phadthai has quit [*.net *.split]
rvirding has quit [*.net *.split]
jgkamat has quit [*.net *.split]
krator44 has quit [*.net *.split]
jackdaniel has quit [*.net *.split]
tokenrove has quit [*.net *.split]
pok has quit [*.net *.split]
sellout has quit [*.net *.split]
Nikotiini has quit [*.net *.split]
micro has quit [*.net *.split]
phadthai has joined #lisp
jgkamat has joined #lisp
rvirding has joined #lisp
Nikotiini has joined #lisp
Fare has joined #lisp
varjagg has quit [Ping timeout: 240 seconds]
krator44 has joined #lisp
steiner has quit [Remote host closed the connection]
steiner has joined #lisp
steiner has quit [Remote host closed the connection]
Ricchi has quit [Ping timeout: 260 seconds]
steiner has joined #lisp
nanozz is now known as nanoz
jackdaniel has joined #lisp
igemnace has quit [Ping timeout: 240 seconds]
fikka has joined #lisp
micro has joined #lisp
trocado has joined #lisp
nanoz has quit [Quit: Leaving]
<trocado>
hi! i think my quicklisp configuration is broken... anything other than quickloading a specific dist gives an error.
<trocado>
for example: (ql:update-dist "alexandria") -> There is no applicable method for the generic function
<aeth>
Essentially, you want to build a language that solves your problem exactly, such as loop or format or cl-ppcre.
pjb has quit [Quit: ERC (IRC client for Emacs 25.1.1)]
pjb has joined #lisp
<aeth>
If your language uses s-expressions it's very easy to integrate into CL. (Those examples don't.)
kajo has joined #lisp
dolohov has joined #lisp
light2yellow has quit [Quit: light2yellow]
<asarch>
Oh :-(
<asarch>
Well, from the point of view of them (Perl/Python people), ORMs are for abstract SQL operations on queries and since (as the On Lisp book says) you can actually create your own programming language with Lisp, I thought this "step" was "natural"
<aeth>
If you can express an SQL query as an s-expression (which is then translated to a string), you can process it in Lisp. Even if this is done entirely at compile time (and at runtime you only have the SQL string), you can still do things with it in macros that generate that macro.
<aeth>
Even if you have a CL ORM at some point it's probably just going to be working on SQL-as-s-expressions. (And you could build one on top of such a system.)