libera/#commonlisp - IRC Chatlog
Search
19:44:36
gilberth
So with CMUCL^SBCL, ECL, ABCL circle printing also is ineffective when you print somewhere else. Again CCL, CLISP, ACL getting it right. IMHO.
19:49:53
pjb
HamzaShahid: it's the same code to create permutations of 2 values as for n values! Just modify my function (trivially).
19:50:54
pjb
HamzaShahid: (defun all-symbol-combinations (p n) (if (zerop n) '(()) (let ((rests (all-bit-combinations (- n 1)))) (mapcan (lambda (bit) (mapcar (lambda (rest) (cons bit rest)) rests)) (iota p))))) (all-symbol-combinations 4 3) #| --> ((0 0 0) (0 0 1) (0 1 0) (0 1 1) (1 0 0) (1 0 1) (1 1 0) (1 1 1) (2 0 0) (2 0 1) (2 1 0) (2 1 1) (3 0 0) (3 0 1) (3 1 0) (3 1 1)) |#
19:51:41
pjb
HamzaShahid: sorry, bad renaming; here it is: (defun all-symbol-combinations (p n) (if (zerop n) '(()) (let ((rests (all-symbol-combinations p (- n 1)))) (mapcan (lambda (bit) (mapcar (lambda (rest) (cons bit rest)) rests)) (iota p))))) (all-symbol-combinations 4 3) #| --> ((0 0 0) (0 0 1) (0 0 2) (0 0 3) (0 1 0) (0 1 1) (0 1 2) (0 1 3) (0 2 0) (0 2 1) (0 2 2) (0 2 3) (0 3 0) (0 3 1) (0 3 2) (0 3 3) (1 0 0) (1 0 1) (1 0 2) (1 0 3) (1 1
19:51:41
pjb
0) (1 1 1) (1 1 2) (1 1 3) (1 2 0) (1 2 1) (1 2 2) (1 2 3) (1 3 0) (1 3 1) (1 3 2) (1 3 3) (2 0 0) (2 0 1) (2 0 2) (2 0 3) (2 1 0) (2 1 1) (2 1 2) (2 1 3) (2 2 0) (2 2 1) (2 2 2) (2 2 3) (2 3 0) (2 3 1) (2 3 2) (2 3 3) (3 0 0) (3 0 1) (3 0 2) (3 0 3) (3 1 0) (3 1 1) (3 1 2) (3 1 3) (3 2 0) (3 2 1) (3 2 2) (3 2 3) (3 3 0) (3 3 1) (3 3 2) (3 3 3)) |#
19:53:30
pjb
HamzaShahid: since it can grow fast, you may want to do it incrementally. have a look at: https://gitlab.com/com-informatimago/com-informatimago/-/blob/master/common-lisp/cesarum/combination.lisp
20:18:42
gilberth
So it looks like SBCL abandoms *print-circle* processing when doing output to another stream altogether, but for the top-level object printed to that other stream. I can see why they have chosen to do so. Watch <https://termbin.com/y6fs>. This time using ~S. When asking for ~20S however, CCL fails to do *print-circle* processing because it first prints the argument to a string.
20:19:43
gilberth
However, completely abandoning *print-circle* may make you face some infinite recursion. I don't like that.
6:09:12
bitblit1
pjb: How would I modify that to make it permutations of a list. I thought of binary but that has repitition?
6:18:16
bitblit1
What is the easy way of grouping a list into sublists for e.g: '(9 2 7 8 4 1 0 4 6 3) in groups of 2 => '((9 2) (7 8) (4 1)...)
6:23:09
bitblit1
Thanks beach However, this is dependent on the cddr function, if we wanted to lets say take pairs of 12 that would be really difficult
6:27:27
bitblit1
beach: I wanted to make something dynamic which pairs depending on a number in this case (list x y z) is also not dependent
6:55:32
prokhor_
i have a question specific on "common prolog" from lispworks but it follows cl implementation rules: I have an assertion like: (assert ((color red))) which gives: (color red) -> YES now i would like to know how how i could do sth like: (setq pred1 human) (setq val1 socrates) and (assert ((pred1 val1))
6:57:07
prokhor_
if i do like above, it takes the var names literally and does not fill in the values associated (i.e. it uses the symbol slot (?))