freenode/#lisp - IRC Chatlog
Search
20:11:49
Josh_2
I just had to use eval to get rid of a ' so that I get consistent output between a list generated like `( ..) and a list generated like `'(.. )
20:13:31
Josh_2
well I tried just using (rest list) as the arg but the returned results werent consistent
20:17:14
Josh_2
when I get rid of eval I get varying results between the `( ) and `'( ) lists, I tried using something like (rest list) when (first list) was eql to 'quote
20:18:09
Josh_2
I'm basically tryna write a compiler-macro to automatically compile templates when they are constants ie `'( ) lists
20:18:33
jackdaniel
so however you want to access the list, you should start from this representation
20:21:15
aeth
I think this is the test for quoted and you then separately have to test the cadr if you want its contents to be something specific: (defun quoted-p (form) (and (listp form) (eql (car form) 'quote) (endp (cddr form))))
20:21:29
jackdaniel
its late, I might have forgot some parenthesis, but I hope you will figure this out
20:21:47
aeth
Note, though that (quoted-p ''a) and (quoted-p `'a) would be T but (quoted-p 'a) would not because the REPL is evaluating the 'a input once
20:24:56
aeth
and (quoted-p '`a) would also be false even though quasiquoting like that (no unquoting) is effectively the same as quoting.
20:26:30
Josh_2
I'm not sure why I have to use (first ..) to get a result equiv to an input that is unquoted
20:26:42
aeth
I guess if you want it to match in style you would replace CAR with FIRSt and CDDR with (rest (rest ...))
20:27:35
aeth
I personally tend to use the CXRs for syntax where DESTRUCTURING-BIND isn't desirable (it usually is, since errors are good, but in this case, it would error instead of returning NIL)
20:39:35
jackdaniel
yes, it is (quote foo) ; for my defense, I've added a disclaimer that it is late :)
21:04:04
aeth
my bad, it's (defun quoted-p (form) (and (listp form) (eql (car form) 'quote) (cdr form) (endp (cddr form))))
21:04:42
aeth
But you have to try really hard to actually get that edge case because e.g. (quote) is an error
6:40:40
beach
Well, it is hard to tell from your example what it is that you need exactly. I assume some-name is a variable?
6:41:35
sda
I'm trying to convert the string "!name: some-name-could-be-anything" to "<h3>Name:</h3> some-name-could-be-anything<br>"
6:42:04
flip214
sda: either use CL-PPCRE, or write a parser (eg. via ESRAP), or use CL:READ with a custom readtable and a few reader macros.
6:42:37
flip214
Depending on how much time you've spent with regular expressions I'd suggest on of the first two ways.
6:43:22
Nilby
You'd have to specify what the syntax for "!name: some-name" is a little more precicely. For example can "name" have a #\space or a #\: in it?
6:43:35
flip214
sda: do you have some regular grammer that you need? ! => h3, !! => h2, !!! => h1 or so?
6:47:46
Nilby
Here's a free and imperfect regex for you: (ppcre:scan "!([^: ]+):\\s*(.*)$" "!name: some-name")
6:50:22
Nilby
But regexp can have some notorious troubles, so I find it's best to just manually parse out a simple string.
6:50:58
flip214
sda: for HTML generation I generally suggest to use CL-WHO, but if it's only that one line you needn't bother
6:56:35
flip214
well, (multiple-value-bind (full matches) (cl-ppcre:scan-to-strings "^!(.*?): *(.*)" input) ....) will give you the two parts you're interested in in (aref matches 0) and (... 1)
6:57:36
beach
Who was it that said that attempting to solve a problem using regular expressions results in two problems.
7:39:00
flip214
beach: yeah, there's a saying. still, for small, quick text manipulation, RE are as dense as it gets (in both senses of the word ;)
7:41:51
beach
Wow, chapter 4 of Land of Lisp is entitled "making decisions with conditions", but in fact it is about conditionALs. Also, on page 51 the author encourages the use of a list variable as a Boolean, and also reverses the IF branches compared to a proof by induction.
7:45:25
beach
Also on page 51, the author claims that the expressions (), '(), nil, and 'nil are "equivalent" without stating the context that would make them so.
7:46:09
beach
No wonder so many people who come here have troubles with this stuff. We must start by making them forget lots of stuff they have "learned" from this book.
7:48:35
beach
The entire thing is written in a very sloppy way. I wonder who were the editors in charge of catching stuff like that.