freenode/#lisp - IRC Chatlog
Search
17:23:53
samlamamma
You know, Lisp is really the ultimate CRUD-application builder. Just provide the definition of your data and Lisp can generate all the code to transfer it between your app, the database, the protobuf layer, what have you.
18:06:29
beach
ACTION learned a new acronym today: https://en.wikipedia.org/wiki/Create,_read,_update_and_delete
18:13:28
beach
Databases seem to imply copying, and copying is contrary to the semantics of Common Lisp, so I am trying to figure out ways of managing data without copying it.
18:21:03
shka_
beach: yeah, you see this is stuff used to build every single webapp, and since it is used to build every single webapp efforts has been made to make it painless even though it still sucks
18:23:49
shka_
at this point potential for the change is minimal, everybody wants to have database in a separate docker etc.
18:29:08
asarch
And when you write your own implementation, how do you know if it is 100% compatible with the standard?
18:29:40
jackdaniel
asarch: there are ansi-tests written by pfdietz, they are very useful when looking for non-conformities
18:40:38
p_l
beach: have you seen GemStone/S? While it's proprietary, the source should be interrogatable at runtime, and it's based about object persistence at language level, iirc
19:33:32
vms14
It's too soon for me to have changed, but I start to see how you change your mind gradually while learning lisp
19:35:04
vms14
I guess the first step is realizing everything is made of abstractions and the way you don't care about non-yet-defined things. But I cannot explain it well since I'm only having a little taste of common lisp
19:59:23
aeth
vms14: It's kind of the opposite of abstractions here. Almost every other language offers heavily abstracted syntax.
20:00:56
aeth
for foo[42] instead of (aref foo 42) and saving maybe half a second of typing and a few characters, you lose a lot, particularly the ability to conveniently define your own syntactic abstractions
20:02:18
aeth
Well, I mean, many languages are stuck with (aref (aref foo 42) 15) instead of (aref foo 42 15) because they're stuck with foo[42][15] instead of having a true foo[42,15] or whatever because that would require new syntax
20:02:28
aeth
So even in my simple example what seems harder winds up being more powerful because it's extensible
20:03:02
vms14
lisp not only lets me build, it also has a lot of builtin functions prepared just to create abstraction
20:04:51
vms14
I mean, since the first time I saw lisp in lisp books or tutorials, I saw lispers are making the pieces more little than what I usually see
20:06:24
vms14
in lisp one function also does one thing ( if the programmer wants ) but it does that thing using a lot of functions which usually are not builtin functions, but created by the programmer
20:07:56
aeth
You can write Lisp in any language. I certainly layer my trivial functions Lisp-style even in C
20:08:38
aeth
No, I mean layers of functions (though higher order functions is, of course, a Lisp feature)
20:08:41
aeth
You can e.g. do most of the input error checking in one function and then a function unencumbered by that noise that just implements the logic.
20:09:49
vms14
doing noob stuff like creating functions for declare a variable and sum that variable
20:09:51
aeth
You *can* do syntactic abstraction in C but don't. Lisp has many advantages over C there. Yes, at that point, just transpile and use s-expressions as your actual source.
20:11:06
vms14
but I guess I'll start with just the (read) function which gives me symbols and start parsing symbols
20:11:38
vms14
I need to learn how to parse, and I'll cry when things go more complicated, but it's just for fun and I'll learn by the way
20:12:12
aeth
vms14: oh please don't do that (adding implicit ()s around foo to make (foo) and then calling it), that's basically as safe as calling eval() in other languages
20:13:37
vms14
I'll start reading symbols and converting symbols to string when needed with (string symb)