freenode/#lisp - IRC Chatlog
Search
8:11:02
ck_
I think that depends on what you mean by AI. These days, I feel like it is mostly "deep learning", meaning data shoveling. As far as I can tell, that's not mainly the domain of lisp
8:11:22
aindilis
nah, srry, I meant GOFAI like here: https://nptel.ac.in/courses/nptel_download.php?subjectid=106106140
8:19:31
aindilis
beach: that's a great question, in all honesty I would probably pester them with requests to work together
8:24:13
aindilis
I've honestly written quite a lot of code, but not so much in Common Lisp, although I'm getting started
8:30:07
no-defun-allowed
And one day I'll finish (well, actually, start, I've reworked the whole process) my GPU backend for Petalisp.
8:32:00
no-defun-allowed
I know OpenCL to some extent, and I'll be generating it from the IR heisig invented.
8:34:29
aindilis
mainly classical AI planning algorithms optimized for GPU, and other more ordinary AI tasks
8:35:11
aindilis
because well I need the infrastructure and have problems historically finding people to collaborate with
9:34:34
jackdaniel
right, I remember I had to write alternative to it some time ago to not die on a heap
9:38:27
jackdaniel
could be, what I'm saying is that alexandria:map-product conses all subresults at the same time
10:22:18
dmiles
to give exmaple of one i have used is http://www.dcc.fc.up.pt/~ricroc/homepage/publications/leap/2013-WFLP.pdf
10:26:48
dmiles
we are moving some of CYC's operation to YAP .. but there is so much to do I cant give a date
10:41:35
dmiles
if i was doing "deep learning" or any sort of statistical annealing... I'd use a symbolic approach ot setting up training
10:51:09
shka__
i think that "reinventing prolog machine" can, and it is one reason i am interested in it
10:53:30
pillton
Well I'll be. From the CLHS entry for defpackage: "If :use is not supplied, it defaults to the same implementation-dependent value as the :use argument to make-package."
10:58:47
dmiles
"Forall Humans there exists limbs with 5 digits each and each digit has a fingernail"
10:59:48
jackdaniel
I think we drift away from the channel topic a little. back to relevance: what is the blackboardedclos?
11:00:53
dmiles
blackboardedclos is where instead of storing in a slotted structure-like thing.. you store using assert/query
11:06:13
_death
does it have knowledge sources contributing in the form of CLOS slot updates, building up instances?
11:07:44
dmiles
_death well that is something i wnt to do .. that the programmer can choose to have the object actually get push/pulled even if it doesnt get Blackboard-ified
11:08:33
dmiles
for example ... (implies (and (isa ?S Socket)(socketType ?S ?T) (servercePort ?T ?P)) (rempotePort ?S P))
11:14:35
dmiles
this CLOS<->BlackboardedCLOS project should be its very own thing but i am doing it inside CYC because I need it myself
11:18:52
dmiles
also there are cases that will have to be fixed .. like someones setcdring a value .. the update might not take place correctly
11:34:48
Xach
pillton: many traditionalists were mad because it broke code that assumed cl was in the default list
11:35:12
aindilis
no-defun-allowed: https://github.com/aindilis/gpgpu-planning/tree/master/systems/gpuplan
11:35:44
jackdaniel
I think that even someone not very traditional would get upset if they had their software broken
11:37:51
no-defun-allowed
welp, i've been poking with GPU code from the sanity of oclcl so i wouldn't have a clue how to read that
13:53:28
pfdietz
You should definitely go to the many other languages that have the features of Common Lisp. /friendlysarcasm
13:54:27
chris4197
I could probably implement a subset of LISP based on functionality that is already inside of our application at work.
13:57:21
jackdaniel
every sufficiently complicasted program has a Common Lisp subset implemented in it (informally specified of course)
14:02:06
pfdietz
Anyway, not going with CL because it lacks features would be silly, IMO. If you are going to avoid CL, libraries and integration issues would be more important. And if you are a manager, worry about hiring people who know it.
14:11:13
beach
chris4197: To my knowledge, there is no language that has strictly more features than Common Lisp.
14:13:07
pfdietz
On might more fruitfully ask which features of CL are "important" in making it CL (or a Lisp).
14:14:41
pfdietz
One little thing I just love is that integers are much closer to mathematical integers than they are in most other languages.
14:17:18
pfdietz
Another slightly meta thing: often, the mechanisms to implement builtin things are themselves made available as utilities. setf expanders, for example. This could widened, I admit.
15:48:31
sjl_
(defmacro foo (value &body body &aux (var (gensym))) `(let ((,var ,value)) (declare (special ,var)) ,@body))
15:51:20
_death
you could go with that approach, and add flet and a symbol-macro so that assignment is prevented
15:53:53
_death
well, the variable behind the flet would be special, and you can define another namespace so that you can shadow
15:56:19
_death
or you could just make it simpler and instead of raw special variable use, define a reader function and a macro to bind
16:10:44
pfdietz
The reason I'd want this was so the compiler could strength reduce accesses to the value of the special variable (and checks for boundp).
16:16:31
pfdietz
More generally: compiler optimizations based on assumptions that are usually true, but where you can detect triggers that violate them, and then recover.
16:16:44
pfdietz
In this case, compile a function under the assumption that *FOO* is never assigned to.
16:17:26
pfdietz
If some function you call violates that, return not to the call site in the function, but to a safe version where that assumption was not made.
16:18:11
pfdietz
This is inspired by code I look at that calls FORMAT (and such) a lot, and is constantly loading *STANDARD-OUTPUT*.
16:18:53
pfdietz
But it would also apply to code that (for example) inlines accessors to classes. The trigger there would be redefinition of those classes or addition of new methods.
16:21:07
ggole
You can do things like assume the value of a global is constant and back off if it is ever redefined, etc
16:33:08
pjb
Well, unless you want the newly bound variables to be of the same kind. Then you need a binding macro.
16:39:13
pjb
Fade: It's just lack of CL knowledge on the part of swig maintainres. Some lisper should volunteer.
16:39:34
shka_
when writing a function that considers two cases, one of each let's say signals condition and the second actually does something more complex
16:39:59
pjb
Fade: on the other hand, so far swig hasn't given be good results. For example, it doesn't support packed structures, so it generates wrong cffi.
16:40:41
Fade
I was not using it for something new, I was looking at orthecredence's libsodium bindings, which use swig.
16:42:32
jackdaniel
shka_: the latter with return-from improves readibility if your function body has nesting bigger than 2-3 levels
16:53:12
shka_
what do you think about situation when function body is not deeply nested but slightly long, let's say 30 lines of code for the ELSE case?
17:40:38
sjl_
Depending on what you're checking, sometimes you can do it another way. E.g. instead of (defun foo (x) (when (null x) (error "Cannot foo a NIL")) (whatever x 10)) you could replace the null check with (defun foo (x) (check-type x (not null)) (whatever x 10))
18:02:40
Bike
i think you are confused about other things. (loop for header-item in (head page) do `(,header-item)) does not collect anything. In fact, it does nothing.
18:07:03
Bike
if i'm reading the spineret documents correctly, you'll need to use the :attrs argument, and return a plist (still one value)./
18:14:10
_death
values-list.. but in this case all you need is to (spinneret:with-html-string (:html (dolist (x '("read" "the" "docs")) (:tag :name "p" x))))
19:56:46
boeg
I was looking at rackets documentation and it seems to have a very impressive gui story. Whats the gui story for common lisp?
20:03:22
aeth
bexx: Get ECL or CLISP and use that to bootstrap, or use a generic Linux SBCL binary... iirc