<beneroth>
it leaves out the standard vim things though
<tankf33der>
wow
<Regenaxer>
Another important point is backups. I syncronize modified files several times per hour to my server, as a mobile device is easy to lose or destroy
<Regenaxer>
Thanks beneroth! I forgot about that one
<Regenaxer>
haha, the "less than 1000 lines" is no longer true
<beneroth>
I tried vip again recently, I believe I grokked it. but I'm missing syntax highlighting and paredit, so for now I'm back to emacs. I consider adding this things to vip - or creating a kind of picolisp web IDE... but not soon.
<beneroth>
Regenaxer, aye, I saw that xD
<Regenaxer>
well, it is 1394 now
<Regenaxer>
not soo very much :)
<Regenaxer>
I should update that wiki article as soon as I have time
clacke_movim has left #picolisp [#picolisp]
clacke_movim has joined #picolisp
clacke_movim has left #picolisp [#picolisp]
clacke_movim has joined #picolisp
clacke_movim has left #picolisp [#picolisp]
clacke_movim has joined #picolisp
jibanes has quit [Ping timeout: 248 seconds]
jibanes has joined #picolisp
clacke_movim has left #picolisp [#picolisp]
clacke_movim has joined #picolisp
clacke_movim has left #picolisp [#picolisp]
clacke_movim has joined #picolisp
clacke_movim has left #picolisp [#picolisp]
clacke_movim has joined #picolisp
xkapastel has joined #picolisp
ubLIX has joined #picolisp
razzy` has quit [Ping timeout: 248 seconds]
orivej has joined #picolisp
rob_w has quit [Quit: Leaving]
ubLIX has quit [Quit: ubLIX]
orivej has quit [Ping timeout: 272 seconds]
razzy2 has joined #picolisp
razzy2 has quit [Changing host]
razzy has joined #picolisp
razzy2 is now known as razzy
razzy has quit [Killed (barjavel.freenode.net (Nickname regained by services))]
orivej has joined #picolisp
<beneroth>
Regenaxer, why is (list? X) not implemented as (not (fin X)) ?
<beneroth>
I have regularly a hard time to separate cons pairs and lists
<Regenaxer>
Hmm, where did you find 'list?'?
<Regenaxer>
not 'lst?'?
<beneroth>
T, I meant lst?
<beneroth>
afaik the only difference of (pair) and (lst?) is the handling of NIL
<Regenaxer>
yes, lst? is also true for NIL
<Regenaxer>
which is not a pair
<beneroth>
so what is the best way to check if an argument is a cons pair and definitely not a list?
<beneroth>
or is definitely a list and not a "pure" cons pair consisting of only 2 cells
<Regenaxer>
"list" is not clearly defined. You mean a NIL-terminated list, right?
<beneroth>
I go with (not (fin)) for now, as this is only true for lists (NIL in the last cell, else its a 2-cell-cons-pair or symbol or number
<beneroth>
yeah, I would say list is clearly defined as a cons pair consisting of two or more cells with NIL in the last cdr
<Regenaxer>
(not (fin X)) for a general lst? check is too expensive
<beneroth>
as the built-in list functions usually assume NIL in the last cdr
<Regenaxer>
one cell is also a list (1)
<beneroth>
(1) has two cells, no?
<Regenaxer>
no, only one
<beneroth>
oh I see
<Regenaxer>
(1 . NIL)
<beneroth>
yeah, NIL in cdr :P
<Regenaxer>
built-in list functions often check just for pair
<Regenaxer>
ie. the last CDR (atomic) is ignored
<beneroth>
exactly
<Regenaxer>
'append', map etc
<Regenaxer>
alse evaluator
<Regenaxer>
thats for efficiency
<Regenaxer>
jusy a single bit check
<beneroth>
my use case is the hStyle / html attribute handling. those attributes can be a symbol (html class) or a 2-cell-cons-pair (html attribute) or list (of symbols and cons pair)
<beneroth>
for handling those properly, I have to distinct between list and 2-cell-cons-pair
<Regenaxer>
yes
<Regenaxer>
lst? is seldom used I think
<Regenaxer>
atom, pair, not perhaps
<beneroth>
I would find lst? more usable if it would check for NIL in last cdr...
<beneroth>
(I'm not arguing for change, would break too much)
<Regenaxer>
well, 'fin' does that
<Regenaxer>
or 'cddr' if 2 cells
<Regenaxer>
"would check for NIL in last cdr." is too expensive
<Regenaxer>
the list might be long
<Regenaxer>
lst? means "pair or NIL"
<beneroth>
yes. I need "not a 2 cell cons pair and not an atom"
<beneroth>
to distinguish between usual lists and 2 cell cons pairs and everything else
<beneroth>
so for my use case "is X a 2 cell cons pair, yes or no" ? cddr errors when argument is not a list!
<Regenaxer>
"a 2 cell cons pair" is the wrong term
<Regenaxer>
a pair is always 1 cell
<beneroth>
a right
<beneroth>
<Regenaxer> a pair is always 1 cell <-- wrong
<beneroth>
: (pair (1 2 3))
<beneroth>
-> (1 2 3)
<Regenaxer>
yes, but the pair is only the first cell of that list
<Regenaxer>
a pair is a CAR and a CDR
<beneroth>
so for my "is X only a car and a cdr, not a list" I do (and (pair X) (not (pair (cdr X)))) ?
<Regenaxer>
(and (pair X) (atom (cdr X)))
<Regenaxer>
pair and atom are complimentary
<Regenaxer>
"list" is not really a data type
<beneroth>
T
<beneroth>
cons pair is the data type, list is a duck-data-type based on it (similar to how classes are symbols)
<Regenaxer>
right
<beneroth>
but the picolisp documentation conflates pair and list :P
<Regenaxer>
for example?
<Regenaxer>
Well, "list" is pair or NIL
<beneroth>
hehe
<Regenaxer>
but in many cases this can be ignored
<beneroth>
oh it is correct in the tractatus, I misrembered
<beneroth>
yes in many, but not in all :D
<Regenaxer>
yep
<Regenaxer>
Sometimes I talk of "NIL-terminated lists"
<Regenaxer>
*if* it is important
<beneroth>
well the start of the reference has data types. Numbers, Symbols, Lists
<Regenaxer>
yeah
<beneroth>
should be Numbers, Symbols, Cons Pair to be purist
<Regenaxer>
"pairs" would confuse
<beneroth>
T
<Regenaxer>
Lisp books introduce pairs usually in later chapters
<beneroth>
should stay as it is. though maybe a short paragraph making the relationship between lists and pairs more obvious/clear would be good. in the tutorial/explaining, or maybe in the reference to (pair) and (lst?)
<beneroth>
I see
<beneroth>
well for the programmer, pair is a special case of list and list the normal (because more often used) thing. even when technically it's kinda the other way round :)
<Regenaxer>
yeah
<beneroth>
NIL-terminated list brings up ugly C thoughts
<beneroth>
:D
<Regenaxer>
C strings?
<beneroth>
aye
<Regenaxer>
I like them :)
<beneroth>
T, the concept is not bad
<beneroth>
simple and flexible
<Regenaxer>
yes, and no limit
<Regenaxer>
just \0 is prohibited (as we discussed already)
<beneroth>
on the other hand maybe a bit too flexible, a great number of bugs and especially security bugs are caused by programmers not correctly handling this
<Regenaxer>
T
<Regenaxer>
It is the fault of C in general, as mem allocation is in the hand of the programmer
<Regenaxer>
very efficient though
<beneroth>
in that regard I like C++ a bit more. in C++ you don't really have to care about mem allocation beside strictly keeping to the "declaration is initialization" rule/pattern. and still you have low-level control when you want it. unfortunately, most code doesn't properly use this.
<beneroth>
all in all C is likely a lot more beautiful, as it is shorter and simpler. C++ is too broad (as discussed before)
<Regenaxer>
agreed
<beneroth>
I haven't yet had a closer look at Rust
<Regenaxer>
Me neither, also not Ruby
<beneroth>
I tried out some Ruby, more strictly its Webstack Ruby on Rails which made it famous and used for a while.
<beneroth>
it's pretty comparable to python I think, in style and target use
ubLIX has joined #picolisp
<beneroth>
Ruby on Rails I didn't like, full of magic. everything works well and easy if you keep to some conventions, but if you go away, things go sideways.
<beneroth>
and not so much control for the programmer, not without going deep into the stack and redo whole portions yourself. therefore I left it and seeked further (ending up here)
<Regenaxer>
I see
<beneroth>
Ruby itself is probably a lot nicer and elegant than just this Rails stack
<beneroth>
I think it has some niche in scripting still, but largely Ruby is going down as Ruby on Rails went out of favour, afaik
clacke_movim has left #picolisp [#picolisp]
freemint has joined #picolisp
freemint has quit [Client Quit]
freemint has joined #picolisp
freemint has quit [Quit: Leaving]
orivej has quit [Ping timeout: 272 seconds]
ubLIX has quit [Quit: ubLIX]
<viaken>
If I wanted to have multiple clients interacting with The same data set and receiving updates from each other, could I do that with a prefix class using (serverSentEvent)?