freenode/lisp - IRC Chatlog
Search
6:38:33
skeuomorf
beach: Was gonna do a pseudo-"static site generator" to replace my current setup "Hakyll" but decided to discard the idea for the moment
6:41:53
skeuomorf
jackdaniel: Yeah, I saw that earlier but it doesn't really fit my needs, has a lot of things that I don't need (e.g. colorize, tweeting, gfycats, ..etc) and doesn't have stuff I need (I sometimes write in rst, org-mode, LaTeX)
6:44:58
jackdaniel
(ftr) https://common-lisp.net/project/ecl/ ; https://common-lisp.net/project/mcclim/ ; turtleware.eu
6:45:09
skeuomorf
jackdaniel: Yes, I am aware. I meant in regards to the codebase, I haven't looked at it yet though
6:47:12
jackdaniel
afair coleslaw is pretty extensible, so if you find rst->html converter adding a plugin should be straightforward
6:47:25
jackdaniel
I've added cl-who plugin at some point of time because I needed control over tables
6:48:03
skeuomorf
The main reason I'm moving away from Hakyll is that it's the embodiment of the Turing Tarpit
6:48:28
skeuomorf
jackdaniel: Yeah, I've used similar EDSLs in Haskell and more closely to CL in Clojure e.g. Hiccup
6:55:34
skeuomorf
jackdaniel: It seems it already has support for rst https://github.com/kingcons/coleslaw/blob/master/docs/plugin-use.md#restructuredtext
6:57:49
jackdaniel
(just to be clear – I'm not affiliated with the project, I just happen to use this software)
8:32:28
nowhere_man
two times in a row, I managed to corrupt somehow a FASL file in my SBCL, while doing something that nothing to do with it
8:33:24
nowhere_man
killed SBCL, started it again, loaded the system I'm working on, then I get "The variable BULK/CORE::+CORE+ is unbound."
8:36:49
xificurC
nowhere_man: which first list? (list x :y :z) == '(:x :y :z) in this case. I'm asking how can I inject a symbol's value into trivia's pattern matcher
8:38:48
xificurC
imagine you're trying to rewrite this into trivia::match (let ((x :x) (to-match '(:x :y :z))) (cond ((eq x (car to-match)) (cdr to-match))))
8:39:14
scymtym
xificurC: not directly afaik, but you can do (let ((x :x)) (optima:match '(:x :y :z) ((list* (optima:guard first (eq first x)) rest) (list :first first :rest rest)))) (which should work in trivia as well)
8:40:16
jackdaniel
I had problems with trivia not evaluating first match argument (so not being really compatible with optima)
8:44:37
xificurC
I looked over the pattern matching libraries on cliki, which is always fun to do after ~2 years. I also really liked cl-unification (except for find-variable-value) and screamer. Is anyone here using any of these? Would love some feedback from first hand experience
8:44:39
jackdaniel
I remember having optima match expression used in trivia what lead to compilation error
8:50:29
xificurC
loli: ok, now rewrite this to trivia::match (let ((x :x) (to-match '(:x :y :z))) (cond ((eq x (car to-match)) (cdr to-match))))
8:58:17
scymtym
xificurC: optima has a shortcut for the guard thing: (let ((x :x)) (optima:match '(:x :y :z) ((list* (eq x) rest) (list :rest rest))))
9:09:30
loli
I would suggest consulting the wiki, as it has information on special-patterns and what not
9:09:49
loli
also I would recommend looking into let-match if you only have 1 form inside of a match
9:18:14
loli
it seems forms like equal are implemented with defpattern, and they are a macro ontop of guard
9:20:04
loli
with defpattern, it seems pretty easy to implement rackets ?, thus giving you any predicate
11:10:09
dim
with sbcl 1.4.7 and asdf 3.3.2 under debian I get The symbol "*SYSTEM-DEFINITION-SEARCH-FUNCTIONS*" is not external in the ASDF/FIND-SYSTEM package.
13:31:38
dlowe
Serializing large objects seems like something that would require a lot of memory if you stored the serialization.
13:36:09
shrdlu68
shka: Sorry, not sure exactly what you need. Also haven't used any of those libs myself.
13:40:36
shrdlu68
Well, some of those mention that they serialize to streams, so they might not require as much memory.
13:58:48
schweers
I have a quesion regarding macros, environments and expansion. I’d like to gather pieces of code from various places and splice them together in another place, which happens later. I’m thinking of having a macro (lets call it on-way), which accepts code and stores it somehow. In addition, I’d need another macro, which takes this stored code and generates new code from it. I was thinking of storing not just the c
13:58:48
schweers
environment, so I could macroexpand while piecing things together. So far I’m not sure if I misunderstood something completely. The question which really bugs me though is: what about closures? What if the code I’m storing away refers to some lexical variable which will be long gone by the time the final code is assembled?
14:00:34
scymtym_
shka: if your data has no circularities, maybe binding CL-STORE:*CHECK-FOR-CIRCS* to NIL could help
14:02:53
beach
schweers: I for one have absolutely no idea what the purpose of your code gathering would be, nor of the use case you are thinking of.
14:03:17
beach
schweers: So you don't control where your code gathering takes place? Otherwise, just don't gather code that refers to lexical variables in parent functions.
14:03:18
schweers
jdz: not exactly mixing, but I know that my understanding is yet a little unclear. Hence my question. I already suspected that I could not have the code I collect refer to lexical variables
14:04:51
schweers
sorry, I should expand a little: I want to walk an OSM (openstreetmap) file, and would like to register handlers for when a node, a way, or a relation object is encountered. I already do this with functions, and it works. But, as a thought experiment, I wanted to know if I could gather the code at compile-time and paste it together to have one big blob of code in the end.
14:05:10
schweers
is seems that this would not work. So I have already learned something from the answers given here
14:06:33
schweers
ignoring the issue of refering to the lexical environment: is it at all considered sane to gather code from various places (together with the &environment) and splice them together somewhere else?
14:07:36
beach
schweers: Not really. In Cleavir, we convert the code to ASTs (which no longer refers to the environment), and those ASTs are more easily combined.
14:08:41
shka
schweers: take a look at the metabang-bind source code to see reasonable way to handle this kind of stuff
14:09:05
beach
schweers: By interrogating the environment to see what the code means, and as a result, creating the AST that the code stands for. Macros and compiler macros are expanded so that no such expansion is required by further processing.
14:11:02
beach
shka: It is, though. If different code snippets are in different environment, you can't gather them without first removing the environment information.
14:12:03
shka
beach: yeah, but why you would want to gather code snippets from different envs if you are not trying to build something that is basicly a compiler?
14:12:23
schweers
shka: the amount of code would not depend on the size of the openstreetmap input. I just want to gather the pieces of code on what to do with a node (for instance). But, the more I think about it, the less feasable it seems, for various reasons
14:13:03
beach
shka: Clearly if code can refer to lexical variables in a parent, then the environment will be different for that code.
14:14:35
schweers
I know there is no /need/. I just wanted to know if it could be done, and what it would take.
14:16:03
schweers
so again, thanks alot for all your answers. you’ve helped me understand some things a little better.
14:23:14
steven___
i have a question about commonqt, this is mycode (:qt-superclass "QGraphicsEllipseItem"), but it running with error, how can i resolve it
14:44:08
scymtym_
Xach: i have fixed versions of cxml and xpath (bug fixes, fewer warnings) which i would like to push into sharplispers repositories. any objections or suggestions?
14:57:39
beach
ecraven: I am reading the OpenType specification from Microsoft, and I see what you mean by the complexity being intrinsic.
14:58:24
beach
It would be a great project to implement the different modules (APIs) in Common Lisp, though. I suspect it could be done incrementally.
15:00:40
beach
asarch: I would think that implementations other than CLISP would be able to do that.
15:02:06
beach
asarch: Oh, perhaps you mean Common Lisp? Then please do not use the abbreviation "Clisp", since it is the name of an implementation of Common Lisp. If you have to abbreviate Common Lisp, then use "CL".
15:03:00
asarch
Hi beach, nice to see you again. The main reason is actually to replace my TCSH scripts with some OOP-capable programming language and to learn how AI works :-)
15:05:15
beach
asarch: Sure. Then you should know that using those characters is not portable. They may not be part of the character set of every implementation.
15:07:00
asarch
I just was testing if I could use other characters than the Latin alphabet to name functions
15:10:38
Bike
it's the glorious future, i don't want to be stuck with what a bunch of cold war engineers thought language was
15:12:26
shka
schweers: hard to tell, but we are stuck with pre-80s technology and primitive economic model to back it
15:12:48
dim
Unicode for function and variable names is debatable, because in many cases there is more than one possible binary encoding for the same visual output, even without mentionning invisible space
15:13:17
dim
Here, the line just contains the https://www.fileformat.info/info/unicode/char/200B/index.htm
15:13:59
dim
well when you have unicode support for symbol names, you have to deal with that, I suppose
15:14:39
schweers
maybe I need to configure emacs in a way that any non ascii is highlighted, just in case
15:14:44
francogrex
Hi I have this, I put a break, optimize debug 3 yet no way to single step into the internal code... https://pastebin.com/EFLzz0be
15:22:35
oleo
so when you say you want to have the most verbose debug level then you set it to 3 and the others to 0 in order to get that
15:24:46
oleo
if you want as fast as possible speed then you have todo that on the expense of safety and debug and space
15:26:07
oleo
#.(declaim (optimize (safety 3) (debug 3) (space 0) (speed 0) (compilation-speed 0) (inhibit-warnings 0))
15:29:36
schweers
I know, I just never thought that optimizations should be set at that stage. This thought simply never crossed my mind.
15:30:28
schweers
exactly, the compiler, not the reader. But then again, one can compile at read time
15:31:55
francogrex
no unfortunately nothing works, even with optimization codes, can't go beyond the first few lines of the loop
15:32:08
oleo
that's where i end of thinking further cause i don't have experinece much with that level
16:15:44
makomo
contrapunctus: not me, but there's also this project/product which seems interesting https://wukix.com/mocl
16:25:09
jackdaniel
eql5-android worked fine for me when I was playing with it, there are quite a few examples in the source tree