Manuel Simoni retweetledi
Manuel Simoni
4.7K posts

Manuel Simoni
@msimoni
geek of programming languages, operating systems, and hypermedia platforms
Katılım Nisan 2008
1.6K Takip Edilen4.7K Takipçiler
Manuel Simoni retweetledi

@joseph_h_garvin @awelonblue @Ngnghm It's a generalized syntax for denotating/serializing arbitrary graphs of objects, something that people always end up adding to other formats like JSON. CL has it built-in from the start in its syntax.
English

@msimoni @awelonblue @Ngnghm What is this used for? Can't you express this without it already? It seems kind of niche.
English

@awelonblue @Ngnghm (The identifier 1 exists only at read-time, and is not part of the parsed form.)
English

Just a tidbit: Common Lisp code is actually a graph, always. It has syntax for referring to other forms, e.g. to create the infinite list containing foo symbols, use '#1=(foo . #1#)
The #1= gives the list the identifier 1 within this form, and the #1# refers back to this element.
$ sbcl
* (defparameter *foos* '#1=(foo . #1#))
*FOOS*
* (subseq *foos* 0 3)
(FOO FOO FOO)
English

"When I sat down to draft the personal section of this post and tried to summarize what I remembered most about BeOS, the file system was the first thing I named. That sentiment was common in 2000, and it has not gotten any less correct since."
jdhodges.com/blog/bebox-bea…
English

Interesting article on generating your app as assembly code directly with a proof assistant blog.zksecurity.xyz/posts/end-codi…
English

@akater I can provide it for every object that can be serialized canonically. E.g. every JSON object with RFC 8785.
Plus of course, I can provide it for many other objects, via something like Java's equals().
English

One of the biggest differences between the Lisp and Unix traditions is that in Lisp a name may contain any characters whatsoever without restrictions (you can even have a name that's the empty string), whereas in Unix you always have massive restrictions on the characters you can put into a name, and those restrictions explode combinatorially if you need to bridge multiple namespaces. Sad!
Even Lisp could be improved though by allowing arbitrary objects as names, and not just strings. Why shouldn't you be able to use a picture or a structured datum as a name?
English

@ElucidationsPod You need _some_ escape character, at least in a plain text syntax, just like you need \ in JSON. But that's just syntactic. What matters is that underlying data can contain any character.
English

@MaineFrameworks I agree that threat modelling is warranted, I just don't think that it's that big an issue outside of well-known problem areas (domain names, email addresses, ...).
It's not like people creating variables with 0 instead of O is a massive security problem. ;-)
English

@msimoni All kinds of code can be subtly compromised in this way, e.g. by declaring a variable with a similar name to a legit one. I don't know how common it is in practice.
English

@jameskjx Clearly the problem here is not that a name may contain arbitrary characters but that the query is constructed in an incompetent way (not using prepared statements)?
English

@msimoni "Why shouldn't you be able to use a picture or a structured datum as a name?"
xkcd.com/327/
English

@MaineFrameworks Yes, if this is a threat to the system then it needs to be addressed (e.g. for usernames). Otherwise, like for filenames, it's typically not that big of a deal.
English

@msimoni What do you do bout character spoofing, e.g. malicious attacks replace c for something that looks like c.
English

@_Felipe I would guess that there are a billion requests per day to internationalized Wikipedia page titles.
(Does it require special care, and should it be restricted for some use cases (domain names, email addresses)? Surely.)
English

@msimoni And that is a cause of many bugs. The devil is in interoperating with many parser implementations. Restricting characters enables (and is governed by) interoperability lessons learned from many failures.
English

@ElucidationsPod They aren't
$ sbcl
* (defvar |'| 1)
|'|
* |'|
1
* (defvar |#| 2)
|#|
* |#|
2
Nederlands

@msimoni I thought parens, delimiters, a pound sign, quotes, etc. were disallowed in a Lisp identifier.
English

@steve_massey @ElucidationsPod $ sbcl
* (defvar |(hello world)| 12)
|(hello world)|
Nederlands

@msimoni @ElucidationsPod No version of Lisp allows '(' or ')' in an identifier
English

@muwlgr Would I ever use a picture as a key in hashtable? Maybe. So why should my namespace prevent this?
English

@msimoni good counter-example, agree. but would you give your "1" a name represented by a picture ?
English




