<aeth>
Essentially, "foo" is like a regex on "^foo" with no support for repetition (0+, 1+) or sets or ranges or negation yet.
<White_Flame>
I decided to take a quick whack at JSON, as you mentioned it
<White_Flame>
this is the full lexer/parser, need to remember how to launch it to test: https://pastebin.com/WM4cfZGv
<White_Flame>
my goal is to make an actual, proper DSL for programming languages
<aeth>
yeah, JSON is not much at all so... I really could just do a JSON next just because
<White_Flame>
no stupid regex games to hack in features
LiamH has quit [Quit: Leaving.]
<White_Flame>
note the lexer breaks the string into punctuation, whitespace, and tokens
<aeth>
My approach isn't really declarative like yours.
<White_Flame>
and the string-contents are a separate lexer language, with backspace stuff being punctuation within it
<White_Flame>
*backslash
<White_Flame>
in the parser, the :separator is well know, so you don't have to monkey with commas between items manually
<White_Flame>
I have an inexplicably great loathing for current lexer/parser tech
ealfonso has quit [Remote host closed the connection]
quazimodo has quit [Ping timeout: 265 seconds]
<White_Flame>
and so when it came to actually needing other language syntax from the lisp reader, I did not abide such things existing here
<White_Flame>
hate is a wonderful motivator for productivity ;)
<White_Flame>
Necessity is the mother of invention
<White_Flame>
Laziness is the father of invention
<White_Flame>
Being pissed off at the status quo is the crazy uncle of invention
<aeth>
White_Flame: I guess I'm not being purist here because technically the parser should read "foo" or "42" as tokens and the lexer should handle them, but... I'm almost certainly going to special case numbers to avoid allocating strings for numbers when I don't need to
<aeth>
(at least iirc, proglang theory was a long time ago for me)
buffergn0me has joined #lisp
<aeth>
(and Lispers ignore parsers)
<White_Flame>
yeah, when I model a new way of working, I tend to add features regardless of cost. The benefit of new ways of working and new enablement outweighs any speed penalty
<White_Flame>
(within feasibility of course)
<z147>
My dream parser would be for educational purposes, parse a program, explain it in layman terms, or translate into visceral interpretation a la Bret Victor
<White_Flame>
oh, another really handy thing that I didn't get in that JSON pass is that even though you can tell the parser to ignore whitespace so it doesn't clutter up your rules, you can manually inject "no-ws" or require "ws" when needed
<White_Flame>
which I'm putting around the colons in the json object spec
efm has joined #lisp
z147 has quit [Quit: z147]
torbo has joined #lisp
torbo has quit [Ping timeout: 272 seconds]
rwcom2 has joined #lisp
rwcom has quit [Ping timeout: 260 seconds]
rwcom2 is now known as rwcom
gioyik has quit [Ping timeout: 272 seconds]
rumbler31 has joined #lisp
rumbler31 has quit [Ping timeout: 258 seconds]
cmatei has quit [Ping timeout: 272 seconds]
cmatei has joined #lisp
slyrus__ has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
slyrus_ has quit [Ping timeout: 260 seconds]
gioyik has joined #lisp
Wombatzus has joined #lisp
gioyik has quit [Ping timeout: 255 seconds]
kajo has quit [Ping timeout: 252 seconds]
kajo has joined #lisp
bitmapper has quit [Ping timeout: 265 seconds]
whiteline has quit [Ping timeout: 258 seconds]
X-Scale` has joined #lisp
Wombatzus has quit [Remote host closed the connection]
Codaraxis has quit [Read error: Connection reset by peer]
orivej has joined #lisp
<verisimilitude>
I empathize with your viewpoint regarding innovation and whatnot, White_Flame.
<White_Flame>
which one?
<verisimilitude>
The crazy uncle is the most noteworthy.
<verisimilitude>
The value of hatred is also understated in modern society.
<verisimilitude>
I tried to write an efficient JSON library, as I was parsing hundreds of thousands of records, but it was too bothersome and my simple string manipulation which makes valid assumptions about the form of the JSON I'm parsing reigns.
<verisimilitude>
Douglas Crockford is rather vocal about how clever he is for disallowing comments, yet whitespace is permitted everywhere.
<verisimilitude>
You're the second person here who's linked me to an image to raise a point; what's wrong with words, I think.
<White_Flame>
it paints a good visual example of what the words say
<White_Flame>
one that was very funny and memorable when I first saw it many years ago, which is always something related to the "crazy uncle" approaches
Lycurgus has joined #lisp
buffergn0me has joined #lisp
CrazyEddy has joined #lisp
EvW has quit [Ping timeout: 248 seconds]
Necktwi has quit [Read error: Connection reset by peer]
<aeth>
If you disallow comments, but permt whitespace everywhere, then you allow comments, just encoded as whitespace.
Lycurgus has quit [Quit: Exeunt]
Inline has quit [Ping timeout: 272 seconds]
oxum has quit [Remote host closed the connection]
notzmv has quit [Ping timeout: 240 seconds]
oxum has joined #lisp
ebrasca has quit [Remote host closed the connection]
oxum has quit [Remote host closed the connection]
buffergn0me has quit [Ping timeout: 240 seconds]
oxum has joined #lisp
<ajithmk>
gravicappa has joined #lisp
rumbler31 has joined #lisp
<Oladon>
heh
rumbler31 has quit [Ping timeout: 255 seconds]
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
Bike has quit [Quit: Lost terminal]
<pjb>
aeth: you should allow ONE whitespace only where it's required, ie. as token terminator when the next token is not a separator.
<pjb>
(defun foo (a b) (+ a b)) has too many whitespaces. It should be: (defun foo(a b)(+ a b))
vlatkoB has joined #lisp
oxum has quit [Ping timeout: 260 seconds]
gioyik has joined #lisp
oxum has joined #lisp
oxum has quit [Ping timeout: 258 seconds]
Jesin has quit [Quit: Leaving]
ebzzry has joined #lisp
ahungry has joined #lisp
oxum has joined #lisp
rumbler31 has joined #lisp
ahungry has quit [Remote host closed the connection]
Jesin has joined #lisp
rumbler31 has quit [Ping timeout: 260 seconds]
oxum has quit [Ping timeout: 265 seconds]
<beach>
Good morning everyone!
shka_ has joined #lisp
oxum has joined #lisp
oxum has quit [Read error: Connection reset by peer]
<elderK>
Hey guys. I'm still confused as to how I should handle kind of cyclic dependencies. I'm working on a set of interpreters from the LISP book. So, my continuation objects, for instance, have a resume generic that invokes an evaluate generic.
<elderK>
Or to be put differently, generics with methods specialized for the proper types.
<elderK>
I initially thought I could just have an interfaces package that you know, defined the generics.
<elderK>
But then that doesn't wind up perfect either as I need to create instances of say, particular continuations and stuff.
<elderK>
I might commit something later, so you can see, and maybe offer insight :)
<elderK>
Happy Friday, also.
ebzzry has quit [Read error: Connection reset by peer]
hsaziz has joined #lisp
<shka_>
elderK: ok, so your problem is that you don't have generic function for constructing continuations
<shka_>
that's what i am getting of it
sunwukong has joined #lisp
<shka_>
however, make-instance could act this way
<elderK>
shka_: Good point.
<elderK>
I have named functions for creating them.
<elderK>
Like, make-zug-continuation ...
<shka_>
or you can add defgeneric make-continuation
<shka_>
ok, gotcha
<elderK>
I mean, that's a personal choice. I just got sick of writing :whatever thing all the time :)
<shka_>
remember that you can specialize with eql 'symbol as well
<shka_>
yup, i see this, however, it is just not generic
<elderK>
Aye. So, what's the equivalent of a forward declaration / prototype in CL? Is it even needed?
<shka_>
you can have both generic constructor function and plain function
<elderK>
Is it common to use make-instance directly?
<shka_>
it is not needed, sometimes you can declaim ftype to avoid style-warnings but that's it
<shka_>
as for make-instance: it is pretty common
<shka_>
good way to structure common lisp OO programs is to divide it into layers
<shka_>
so you may have your generic protocol layer and more user friendly API layer constructed on top of it
<shka_>
this approach worked very much in my favor so far!
<shka_>
right now i do it the following way: First I name my module, for instance continuations. This module will contain user friendly API. continuations.meta module will contain the low level protocol
<beach>
elderK: Yes, it is common to use MAKE-INSTANCE directly.
<shka_>
elderK: i start to feel like i am rambling at this point ;-), you get the idea though, right?
<elderK>
shka_: I'm interested :)
<elderK>
beach: Thanks :)
<beach>
elderK: You don't need anything like forward declarations if you use generic functions. The DEFGENERIC form plays the role of a declaration.
oxum has quit [Ping timeout: 255 seconds]
<beach>
elderK: A CLOS protocol (generalization of interface) consists of generic functions, classes, and initargs.
<beach>
elderK: You might have a look at the CLIM II specification for how that works. I learned object-oriented programming in Common Lisp from the CLIM II specification.
<shka_>
elderK: ok, so my approach is to define API with dictionary of terms constructed by the PROTOCOL. Protocol should be minimal and complete set of lisp stuff, API should be easy to understand and use.
<shka_>
and beach will explain everything else better then i would ever could
<elderK>
An example I have: I have a class, activation-frame.
<elderK>
But I have several specializations of that class. One for holding continuations for block forms, one for holding slots for local variable bindings.
<elderK>
They are, for simplicity, chained.
<elderK>
So I have functions to retrieve the continuation associated in some frame, at some offset from the current frame.
kajo has joined #lisp
<elderK>
Would the function / generic that performs that lookup, be defined in the file that defines the block specialization of an activation frame?
<elderK>
Or would it be a generic, defined in the file that defines the activatio-frame class
<elderK>
?
<elderK>
Since, it is meant to be callable on any kind of frame. Since, it is performing a search of sorts.
<beach>
elderK: I put my DEFGENERIC forms in a separate file.
karlosz has quit [Quit: karlosz]
<beach>
More important is what package you use.
<beach>
elderK: I create "modules" consisting of an ASDF system definition, a package definition, and a bunch of files with code in them.
<beach>
If possible, one such file contains the DEFGENERIC forms.
jprajzne has quit [Ping timeout: 260 seconds]
m00natic has joined #lisp
hhdave has joined #lisp
<elderK>
beach: How would you deal with the situation where say, the continuation module depends on the expression module, which depends on the continuation module?
<beach>
You would not design modules that way.
<elderK>
Agreed.
<elderK>
This is, however, the way the code in the LISP book is structured, unfortunately. Although, it doesn't use CL nor namespaces.
<beach>
Then they would probably be in the same module.
<beach>
What book is that?
<elderK>
Lisp in Small Pieces.
<elderK>
Everything is in a big file. I am trying to separate things out more, give it more structure for experimenting further.
<beach>
It uses Scheme everywhere as I recall.
<elderK>
That may be the problem :)
<elderK>
It does.
<elderK>
I prefer CL because of SlimV / SLIME :)
<beach>
You can separate things whatever way you like if you don't have several packages.
<beach>
elderK: Which chapter are you looking at?
Necktwi has quit [Ping timeout: 255 seconds]
<elderK>
I'm trying to meld Chapter 3 with Chapter 6 :)
<elderK>
With some experimenting thrown in :)
Necktwi has joined #lisp
jprajzne has joined #lisp
HDurer has joined #lisp
rumbler31 has joined #lisp
oxum has joined #lisp
rumbler31 has quit [Ping timeout: 265 seconds]
Khisanth has quit [Ping timeout: 260 seconds]
ebzzry has joined #lisp
ljavorsk has joined #lisp
Khisanth has joined #lisp
ljavorsk has quit [Quit: I'm out, bye]
ljavorsk has joined #lisp
oxum_ has joined #lisp
oxum has quit [Ping timeout: 265 seconds]
gravicappa has quit [Ping timeout: 265 seconds]
gravicappa has joined #lisp
cosimone has joined #lisp
ebzzry has quit [Ping timeout: 265 seconds]
dale has quit [Quit: My computer has gone to sleep]
mingus has quit [Quit: ERC (IRC client for Emacs 26.3)]
rumbler31 has joined #lisp
oxum has joined #lisp
oxum_ has quit [Read error: Connection reset by peer]
rumbler31 has quit [Ping timeout: 265 seconds]
oxum_ has joined #lisp
oxum has quit [Read error: Connection reset by peer]
rwcom has quit [Read error: Connection reset by peer]
iAmDecim has quit [Ping timeout: 255 seconds]
jmercouris has joined #lisp
<jmercouris>
I have an interesting issue, when I launch my program from the terminal it does *not* crash, when I launch it from GUI, it crashes very easily, thoughts?
<jmercouris>
I can't imagine what it could be causing it, it is the EXACT same program
<loke``>
jmercouris: You might not have stdout opened when running from the GUI
<loke``>
try to start the program like so: foo </dev/null
<loke``>
(i meant stdin)
<loke``>
It may be that stdout is closed as well, but I'm not entirely sure how to simulate that from the shell
ebzzry has joined #lisp
<jmercouris>
loke``: OK
<beach>
jmercouris: Do you mean "crash" as in it signals an error?
<jmercouris>
maybe it does, I don't know
<jmercouris>
all I know is that the program exits and my window manager says "program had to be closed"
<jmercouris>
I'm thinking it may be an issue of permissions
<jmercouris>
different owners are responsible when launching from GUI vs Terminal?
<jmercouris>
and so it tries to read files that it cannot read, and then loses its mind, and crashes
<jmercouris>
loke``: launches and works just fine with foo </dev/null
<loke``>
jmercouris: owners? Why would that be different
<jmercouris>
I just figured, tested it, owners are the same
<loke``>
How do you actually "start from the gui"?
<jmercouris>
I open up spotlight, I type in "next" and hit RET
<loke``>
The owner of what, the executables file itself?
<loke``>
What is spotlight?
<jmercouris>
spotlight is like dmenu
oxum_ has quit [Remote host closed the connection]
<jmercouris>
it is a macos launcher /search program
<loke``>
WHat is dmenu?
<loke``>
Oh, it's OSX. THen there are a _lot_ of things that are different
rwcom has joined #lisp
<jmercouris>
anyways, Next writes some things, like a history.lisp file, etc
<jmercouris>
I figured maybe the GUI guy cant read from the Terminal guy because maybe they are differenet users/permissinos
<jmercouris>
anyways, they are the same
<jmercouris>
makes no sense to me this behavior, maybe I'll have to use Shinmera deploy and see all output streams to see if there is anything that may give me a hint
oxum has joined #lisp
v_m_v has joined #lisp
hsaziz has quit [Ping timeout: 255 seconds]
v_m_v has quit [Remote host closed the connection]
hsaziz has joined #lisp
darkstardev13 has quit [Ping timeout: 240 seconds]
tadni has left #lisp ["Kicked by @appservice-irc:matrix.org : Idle for 30+ days"]
amerlyq has joined #lisp
EuAndreh[m] has left #lisp ["Kicked by @appservice-irc:matrix.org : Idle for 30+ days"]
eriix[m] has quit [Quit: Idle for 30+ days]
ravenx has joined #lisp
nowhere_man has joined #lisp
shangul has joined #lisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
v_m_v has joined #lisp
prince1 has quit [Ping timeout: 255 seconds]
rumbler31 has joined #lisp
rwcom has quit [Ping timeout: 272 seconds]
bitmapper has joined #lisp
<verisimilitude>
Since interactive debugging doesn't seem to be an option, just change the program to write as much relevant state as it can to a file as it can, with a top-level condition handler, jmercouris.
rumbler31 has quit [Ping timeout: 240 seconds]
v_m_v has quit [Remote host closed the connection]
<verisimilitude>
If it can't open any files, you could send such state some other way, I suppose.
montaropdf has joined #lisp
v_m_v has joined #lisp
hsaziz has quit [Ping timeout: 260 seconds]
<jmercouris>
verisimilitude: that makes sense, yes
shangul has quit [Ping timeout: 255 seconds]
v_m_v has quit [Remote host closed the connection]
shangul has joined #lisp
v_m_v has joined #lisp
<jmercouris>
is there a way in Emacs to refactor a class name?
prince1 has joined #lisp
jmercouris has quit [Remote host closed the connection]
jmercouris has joined #lisp
v_m_v has quit [Ping timeout: 260 seconds]
jmercouris has quit [Remote host closed the connection]
shangul has quit [Ping timeout: 258 seconds]
jmercouris has joined #lisp
<jmercouris>
I take that as a no?
prince1 has quit [Ping timeout: 240 seconds]
<loke``>
In Lisp? I don't know of any refactoring tools in Emacs for Lisp.
<jmercouris>
I was afraid I would have to go on query replace adventure
jmercouris has quit [Remote host closed the connection]
jmercouris has joined #lisp
ebzzry has quit [Ping timeout: 258 seconds]
nowhere_man has quit [Ping timeout: 258 seconds]
ljavorsk has quit [Remote host closed the connection]
<montaropdf>
Can someone confirm that I am still connected to the channel?
gareppa has joined #lisp
rumbler31 has quit [Ping timeout: 255 seconds]
montaropdf has quit [Quit: ERC (IRC client for Emacs 26.3)]
montaropdf has joined #lisp
cosimone_ has joined #lisp
lucasb has joined #lisp
<TMA>
montaropdf: sorry, I cannot confirm at the moment
<phoe>
montaropdf: that'll cost you $50, think twice since there are no refunds
cosimone has quit [Ping timeout: 240 seconds]
<montaropdf>
I just reconnect, I was wondering why auto complete for nicknames wasn't working but I guess this is due to the fact the user have closed its connection to the channel
oxum has joined #lisp
Bourne has joined #lisp
oxum_ has joined #lisp
oxum has quit [Read error: Connection reset by peer]
makomo has joined #lisp
hsaziz has joined #lisp
cosimone has joined #lisp
cosimone_ has quit [Ping timeout: 258 seconds]
shangul has joined #lisp
lnostdal has joined #lisp
trittweiler has joined #lisp
oxum_ has quit [Read error: Connection reset by peer]
oxum has joined #lisp
hsaziz has quit [Quit: hsaziz]
jmercouris has joined #lisp
cosimone has quit [Ping timeout: 240 seconds]
cosimone has joined #lisp
cosimone has quit [Client Quit]
shifty has quit [Ping timeout: 255 seconds]
mercourisj has joined #lisp
jmercouris has quit [Disconnected by services]
mercourisj is now known as jmercouris
v_m_v has joined #lisp
random-nick has joined #lisp
davepdotorg has joined #lisp
oxum_ has joined #lisp
oxum has quit [Read error: Connection reset by peer]
shangul has quit [Ping timeout: 255 seconds]
mercourisj has joined #lisp
mercourisj has quit [Remote host closed the connection]
rumbler31 has joined #lisp
v_m_v has quit [Remote host closed the connection]
pjb has quit [Remote host closed the connection]
jmercouris has quit [Ping timeout: 255 seconds]
pjb has joined #lisp
rumbler31 has quit [Ping timeout: 260 seconds]
dddddd has joined #lisp
shangul has joined #lisp
cosimone has joined #lisp
shka_ has quit [Quit: WeeChat 1.9.1]
cosimone has quit [Excess Flood]
cosimone has joined #lisp
frodef has quit [Ping timeout: 258 seconds]
Cymew has quit [Ping timeout: 240 seconds]
EvW has joined #lisp
__jrjsmrtn__ has joined #lisp
_jrjsmrtn has quit [Ping timeout: 260 seconds]
oxum_ has quit [Ping timeout: 258 seconds]
shangul has quit [Ping timeout: 260 seconds]
prince1 has joined #lisp
_paul0 has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
paul0 has quit [Ping timeout: 246 seconds]
DGASAU has joined #lisp
prince1 has quit [Ping timeout: 260 seconds]
v_m_v has joined #lisp
_paul0 is now known as paul0
v_m_v has quit [Ping timeout: 260 seconds]
Bike has joined #lisp
gioyik has quit [Ping timeout: 272 seconds]
v_m_v has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
DGASAU has joined #lisp
gareppa has quit [Quit: Leaving]
iAmDecim has joined #lisp
pjb has quit [Remote host closed the connection]
pjb has joined #lisp
cosimone has quit [Remote host closed the connection]
eta has joined #lisp
cosimone has joined #lisp
oxum has joined #lisp
iAmDecim has quit [Ping timeout: 240 seconds]
oxum_ has joined #lisp
Cymew has joined #lisp
rumbler31 has joined #lisp
oxum has quit [Ping timeout: 245 seconds]
gabiruh has joined #lisp
oxum_ has quit [Ping timeout: 255 seconds]
v_m_v has quit [Remote host closed the connection]
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
rumbler31 has quit [Ping timeout: 260 seconds]
oxum has joined #lisp
LiamH has joined #lisp
v_m_v has joined #lisp
clothespin has quit [Remote host closed the connection]
ebrasca has joined #lisp
v88m has joined #lisp
iAmDecim has joined #lisp
iAmDecim has quit [Ping timeout: 246 seconds]
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
q-u-a-n2 has quit [Remote host closed the connection]
q-u-a-n2 has joined #lisp
frodef has joined #lisp
bitmapper has quit [Read error: Connection reset by peer]
bitmapper has joined #lisp
gko_ has quit [Ping timeout: 240 seconds]
nowhere_man has joined #lisp
heisig has quit [Quit: Leaving]
ljavorsk_ has joined #lisp
ljavorsk has quit [Ping timeout: 260 seconds]
nowhere_man has quit [Ping timeout: 258 seconds]
nowhereman has joined #lisp
gioyik has joined #lisp
jprajzne has quit [Quit: Leaving.]
nowhereman has quit [Ping timeout: 258 seconds]
efm has quit [Remote host closed the connection]
efm has joined #lisp
nowhereman has joined #lisp
sjl_ has joined #lisp
prince1 has joined #lisp
gko_ has joined #lisp
sjl_ has quit [Client Quit]
rumbler31 has joined #lisp
prince1 has quit [Ping timeout: 260 seconds]
rumbler31 has quit [Ping timeout: 265 seconds]
nowhereman has quit [Ping timeout: 240 seconds]
madage has quit [Remote host closed the connection]
montaropdf has quit [Ping timeout: 248 seconds]
madage has joined #lisp
Xach has quit [Ping timeout: 255 seconds]
Xach has joined #lisp
LiamH has quit [Ping timeout: 258 seconds]
LiamH1 has joined #lisp
Inline has quit [Quit: Leaving]
LiamH has joined #lisp
efm has quit [Ping timeout: 258 seconds]
aeth has quit [Ping timeout: 265 seconds]
LiamH1 has quit [Ping timeout: 265 seconds]
aeth has joined #lisp
Inline has joined #lisp
hsaziz has joined #lisp
jmercouris has joined #lisp
cosimone has quit [Quit: Terminated!]
shka_ has joined #lisp
nowhereman has joined #lisp
<katco>
sometimes when debugging a program with sbcl + slime, a stack frame's local variable will be listed as `sb-debug::more`. what's going on here?
hsaziz has quit [Ping timeout: 255 seconds]
<Inline>
something is off with clos too
<Inline>
method parameter lengths don't match etc...
add^__ has joined #lisp
nowhereman has quit [Ping timeout: 252 seconds]
orivej has quit [Ping timeout: 255 seconds]
cosimone has joined #lisp
shangul has joined #lisp
ljavorsk_ has quit [Ping timeout: 240 seconds]
rwcom has joined #lisp
<jmercouris>
how to have more reasonable stack traces when a system doesn't load?
<jmercouris>
ASDF produces the most cryptic errors
wsinatra has joined #lisp
rumbler31 has joined #lisp
brettgilio has quit [Ping timeout: 272 seconds]
<phoe>
jmercouris: see the REPL, the actual error should be printed up there
smazga has joined #lisp
<jmercouris>
phoe: I look, thank you
smazga has quit [Client Quit]
rumbler31 has quit [Ping timeout: 260 seconds]
ebzzry has quit [Ping timeout: 260 seconds]
ljavorsk_ has joined #lisp
v_m_v has quit [Remote host closed the connection]
v_m_v has joined #lisp
v_m_v has quit [Remote host closed the connection]
notzmv has quit [Remote host closed the connection]
notzmv has joined #lisp
wsinatra has quit [Quit: WeeChat 2.7.1]
ebzzry has joined #lisp
gareppa has joined #lisp
wsinatra has joined #lisp
EvW has quit [Ping timeout: 240 seconds]
prince1 has joined #lisp
davepdotorg has quit [Ping timeout: 255 seconds]
<flip214>
ah, but that doesn't mean case-insensitive sub-expression, but _only_ a literal.
m00natic has quit [Remote host closed the connection]
prince1 has quit [Ping timeout: 246 seconds]
rumbler31 has joined #lisp
rumbler31 has quit [Ping timeout: 255 seconds]
cosimone has quit [Quit: Quit.]
gko_ has quit [Ping timeout: 240 seconds]
shangul has joined #lisp
hhdave has quit [Quit: hhdave]
<seok>
anyone done an embedded project in CL
<phoe>
seok: how embedded are you talking?
<seok>
idk, at any level
<phoe>
CL is not a good language to run on devices with kilobytes of RAM
<seok>
I've just started looking into it
<phoe>
but workable for raspberry pi
iAmDecim has joined #lisp
<seok>
by workable, would you recommend it?
<phoe>
never done CL on raspi, only heard a few success stories - maybe someone else will have more to say
joast has quit [Quit: Leaving.]
iAmDecim has quit [Ping timeout: 272 seconds]
scymtym has quit [Ping timeout: 248 seconds]
slyrus_ has joined #lisp
slyrus__ has quit [Ping timeout: 255 seconds]
slyrus__ has joined #lisp
shangul has quit [Ping timeout: 240 seconds]
slyrus_ has quit [Ping timeout: 240 seconds]
karlosz has joined #lisp
subham has joined #lisp
efm has quit [Ping timeout: 260 seconds]
<jackdaniel>
32MB of memory is probably minimum what you need to do anything useful, raspberry pi is safely above this limit
<jackdaniel>
if you develop for arm32, then be aware that sbcl doesn't have multiple threads on that platform (ccl and ecl could be used)
<jackdaniel>
if you want to embed your lisp in another C application, then ecl may be linked as a shared library (aka libecl)
<jackdaniel>
if you develop for android/ios, then from free implementations only ecl gives you access to GUI stuff (via EQL5 project), however you may still run other implementations in a terminal (i.e termux) -- at least on android
<jackdaniel>
seok: ^
karlosz has quit [Quit: karlosz]
ebzzry has quit [Ping timeout: 255 seconds]
sarna has quit [Quit: bye]
sarna has joined #lisp
terpri_ has quit [Ping timeout: 240 seconds]
LdBeth has quit [Ping timeout: 256 seconds]
sz0 has quit [Quit: Connection closed for inactivity]
subham has quit [Quit: subham]
gareppa has quit [Quit: Leaving]
nullman has quit [Remote host closed the connection]
nullman has joined #lisp
rumbler31 has joined #lisp
orivej has joined #lisp
rumbler31 has quit [Ping timeout: 258 seconds]
Cymew has quit [Ping timeout: 240 seconds]
<Odin->
seok: Not CL, but definitely not a Clojure-inspired thing is uLisp.
<Odin->
Which was apparently originally designed for an Arduino.
gioyik has quit [Quit: WeeChat 2.7]
sz0 has joined #lisp
<seok>
nice
slyrus_ has joined #lisp
<Odin->
Ironically, I haven't messed around with it yet because I got distracted from setting up an ATMega328 on a breadboard for it a couple of hours ago.
LdBeth has joined #lisp
slyrus__ has quit [Ping timeout: 260 seconds]
slyrus has joined #lisp
Codaraxis_ has joined #lisp
eschulte has joined #lisp
slyrus_ has quit [Ping timeout: 255 seconds]
didi has joined #lisp
<eschulte>
I'm surprised that two-way-stream is a structure in some implementations and a class in others. I guess the standard doesn't make any promises about the type or (or ability to inherit from) a "system class."
<phoe>
eschulte: correct.
Codaraxis has quit [Ping timeout: 240 seconds]
<jackdaniel>
system class n. a class that may be of type built-in-class in a conforming implementation and hence cannot be inherited by classes defined by conforming programs.
<phoe>
oh I was about to quote that
<eschulte>
Oh, so not just that it isn't guaranteed to be possible but is explicitly forbidden.
<didi>
Can I use a form to compute a member type list inside a `declare'? I'm using (declare (type #.`(member ,@(mapcar #'car *global-list*)) parameter)), but I have to compile the function every time I change *global-list*.
<phoe>
eschulte: not really "explicitly forbidden" - just non-conforming
<phoe>
didi: can'
<phoe>
can't do that
<didi>
phoe: Oh, well. Thank you.
<phoe>
eschulte: inheriting from system classes is implementation-defined behaviour; some will let you do that, some won't
<phoe>
but if you want to conform, you can't count on that being possible.
<eschulte>
Understood, well thanks, that's good to know. Nobody happens to know of any packages that provide something like two-way-stream as a regular class?
<Odin->
eschulte: Strictly speaking, doing anything that's not expressly stated valid by the standard makes a program non-conforming, and virtually any actually useful program is going to need implementation-defined behaviour.
<phoe>
Gray streams allow you to build your own one
<phoe>
what exactly do you want to do with your custom two-way stream?
<eschulte>
phoe: great thanks! I'll take a look at that
<_death>
eschulte: hey, I've two small patches to graph that don't seem to merit a fork/PR (and they likely need a little more work, such as adding/changing test cases) if you're interested: https://gist.github.com/death/a8b3235834d9e5eecb723356f786cf52
<eschulte>
_death: awesome, thanks. I'll put them on my stack (although it will probably be a couple of days)
<phoe>
sounds more like a pipe than a stack
joast has joined #lisp
<phoe>
or maybe like a prio heap
<eschulte>
phoe: yes, lilo stack
<eschulte>
more like a pool I swim in
<didi>
Dang. I can't use a type defined with DEFTYPE in a DEFMETHOD parameter.
<Bike>
yeah, only classes and eql specializers. the type system doesn't have all the right properties.
* didi
nods
<eschulte>
_death: applied those patches, thanks!
<_death>
eschulte: cool ;)
rippa has joined #lisp
prince1 has joined #lisp
shifty has joined #lisp
prince1 has quit [Ping timeout: 240 seconds]
ljavorsk_ has quit [Ping timeout: 260 seconds]
rumbler31 has joined #lisp
sauvin has quit [Read error: Connection reset by peer]
rumbler31 has quit [Ping timeout: 260 seconds]
terpri has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
EvW1 has joined #lisp
guna has joined #lisp
z147 has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 260 seconds]
Lord_of_Life_ is now known as Lord_of_Life
gravicappa has quit [Ping timeout: 258 seconds]
<pfdietz>
You could have asked me about that, Eric. :)
terpri has quit [Quit: Leaving]
terpri has joined #lisp
v88m has quit [Read error: Connection reset by peer]
v88m has joined #lisp
scymtym has joined #lisp
iAmDecim has joined #lisp
terpri has quit [Quit: Leaving]
terpri has joined #lisp
shka_ has quit [Ping timeout: 240 seconds]
ggole has quit [Quit: Leaving]
lucasb has quit [Quit: Connection closed for inactivity]
Bike has quit [Quit: Bike]
* Xach
lives to cause trouble
<phoe>
and make it double
efm has joined #lisp
* didi
throws a rock at phoe
whiteline_ has joined #lisp
whiteline has quit [Read error: Connection reset by peer]
* phoe
takes 2d4 (5) damage
<edgar-rft>
Xach: you're the fist one I met who realized that
efm_ has joined #lisp
efm has quit [Ping timeout: 240 seconds]
efm_ has quit [Client Quit]
* Xach
hee hee
slyrus_ has joined #lisp
slyrus has quit [Ping timeout: 255 seconds]
rumbler31 has joined #lisp
LiamH has quit [Ping timeout: 258 seconds]
rumbler31 has quit [Ping timeout: 240 seconds]
<didi>
Can I mutate the list returned by `multiple-value-list'?
LiamH has joined #lisp
<pfdietz>
The Note implies you can, but I'm not sure that's normative.
<pfdietz>
(multiple-value-list form) == (multiple-value-call #'list form) ;; the note
<_death>
the description says it "creates a list"
<didi>
Cool. Thank you.
<_death>
but I agree it's not explicitly allowing for mutation.. so if you're worried about that, don't
<didi>
Ah...
<pfdietz>
" Likewise, the ``Examples'' and ``Notes'' sections in a dictionary entry are not considered part of the standard and could be removed if necessary. "
<pfdietz>
In practice, I don't think it would be a problem.
<Xach>
if it works now, maybe sbcl will make them specially immutable in the future
<Xach>
with a new spite-cons data structure
<_death>
the one where (sleep 1) loops forever?
<aeth>
The issue with literals like '(1 2 3) is that they exist before the runtime so it makes sense to optimize them, and those optimizations break down when you mutate them. I don't think MULTIPLE-VALUE-LIST is like that at all. You'd probably need a really weird bytecode interpreter with a really weird interpretation of multiple values for that to be the case.
<aeth>
And even then that would probably only affect closures that return multiple values, and probably would be considered a bug.
<aeth>
At least IMO.
<flip214>
within an ESRAP:DEFRULE, can I find out up to which position the input was consumed? Or do I get that information only outside, from ESRAP:PARSE?
<pfdietz>
In a lisp that implemented multiple return values with a list, I could see (apply #'values '(1 2 3)) causing trouble. But I don't think any do that.
<flip214>
ah, the (:lambda) option has &bounds
efm has joined #lisp
Bike has joined #lisp
Bourne has quit [Remote host closed the connection]
<pfdietz>
I mean, you could deliberately arrange that, say by (eval-when (:compile-toplevel :load-toplevel :execute) (eval '(defparameter *foo* 17)))
<didi>
pfdietz: Thank you.
<pfdietz>
Or just assign to it at the top level, again with eval-when
<pfdietz>
(and have a special declaim)
karlosz has joined #lisp
<didi>
Beautiful.
<pfdietz>
The point I was trying to make earlier was that the type doesn't get modified in your program if, during run time, you rebind the variable.
<didi>
pfdietz: Right, right.
<aeth>
You should probably create the DEFTYPE with a macro.
<aeth>
That makes it very clear that it's not customizable past the initial part.
<didi>
It might have been easier to use an `ASSERT' inside the methods, but this has been instructive.
<didi>
aeth: Hum.
<aeth>
(deftype foobar (x) ...) then (defmacro define-your-type (foo var) `(deftype ,foo () '(foobar ,var))) then (define-your-type foo 17)
iAmDecim has quit [Ping timeout: 240 seconds]
<aeth>
You can also make the macro handle constants specially if they're constant, but then you need to EVAL-WHEN the constant to get it to work in CCL
<didi>
Heh, you gave me an idea. As all my values are keywords, I could write a macro that receives a list of N keywords and expand to N methods specializing to each keyword. A boatload of methods.
<didi>
aeth: Thank you.
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
donotturnoff has joined #lisp
<_death>
will it give you a big advantage over a single method that can handle any one of them?
<didi>
_death: The idea is preventing myself of passing a keyword is doesn't know how to handle.
<didi>
s/is/it
<_death>
seems like a job for check-type
<didi>
_death: That too. But then we are back to my defparameter + deftype hack.
<_death>
if the set of keywords is not fixed at compile-time, then (assert (member keyword set-of-valid-keywords) (keyword) "...") could do
<didi>
_death: Right.
dale_ has joined #lisp
dale_ is now known as dale
LiamH1 is now known as LiamH
_whitelogger has joined #lisp
<_death>
I can imagine cases where defining similar methods specialized on particular keywords would make sense, but it's not the only alternative, and has costs in terms of code generation, error reporting and handling, and such
EvW1 has quit [Ping timeout: 240 seconds]
slyrus__ has joined #lisp
slyrus_ has quit [Ping timeout: 255 seconds]
didi has quit [Remote host closed the connection]
<scymtym>
could anyone with access to SBCL on windows tell me whether the following prints a tiny unicode tree to *STANDARD-OUTPUT*: