why scheme not common lisp

49 views
Skip to first unread message

paarulakan(பாருலகன்)

unread,
Feb 6, 2020, 5:20:50 AM2/6/20
to opencog
Why did opencog choose scheme as its lisp not common lisp. I recently started learning lisp family of languages, still a newbie. but other than the thing that scheme is lighweight, are they any other reason for using scheme?

Linas Vepstas

unread,
Feb 6, 2020, 5:04:51 PM2/6/20
to opencog
Hi Paarulakan ..

Why scheme instead of lisp?  Well, scheme is a modern-lisp, having cleaned up assorted messes and inconsistencies and ugly-bits.   Kind of like asking "why C instead of fortran?"

Why guile-scheme instead of some other scheme? Guile offered vastly superior integration into C/C++ than any other scheme out there. I don't know if that's still true or not. Certainly, all  schemes/lisps have "foreign function interfaces" -- FFI's but I don't believe that's enough -- we're not just invoking foreign functions, there's a whole bunch of backward-foreward movement between  the code in each language.

-- Linas

On Thu, Feb 6, 2020 at 4:20 AM paarulakan(பாருலகன்) <selva.d...@gmail.com> wrote:
Why did opencog choose scheme as its lisp not common lisp. I recently started learning lisp family of languages, still a newbie. but other than the thing that scheme is lighweight, are they any other reason for using scheme?

--
You received this message because you are subscribed to the Google Groups "opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email to opencog+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/7d99a84e-a980-4bb1-950f-8185362b5f76%40googlegroups.com.


--
cassette tapes - analog TV - film cameras - you

paarulakan(பாருலகன்)

unread,
Feb 7, 2020, 2:02:30 AM2/7/20
to opencog
Hi Linas,

Thank you. Can you point me to documentation for 'how the backward-forward things' work. I have made python bindings for some some libraries, but it was never two way. I am still reading the opencog docs,  my mental model is that most of the communication is happening through atomspace. right?

To add more context, I come from deep learning background so I know python, but I want to work on symbolic natural language processing. I am learning lisp for the same reason. I have been working with python for 4 years now but it seems unnatural for symbolic NLP. Is there a way to pickup some task and apply opencog framework for that? more concretely sentiment analysis and question answering.

On Friday, February 7, 2020 at 3:34:51 AM UTC+5:30, linas wrote:
Hi Paarulakan ..

Why scheme instead of lisp?  Well, scheme is a modern-lisp, having cleaned up assorted messes and inconsistencies and ugly-bits.   Kind of like asking "why C instead of fortran?"

Why guile-scheme instead of some other scheme? Guile offered vastly superior integration into C/C++ than any other scheme out there. I don't know if that's still true or not. Certainly, all  schemes/lisps have "foreign function interfaces" -- FFI's but I don't believe that's enough -- we're not just invoking foreign functions, there's a whole bunch of backward-foreward movement between  the code in each language.

-- Linas

On Thu, Feb 6, 2020 at 4:20 AM paarulakan(பாருலகன்) <selva.d...@gmail.com> wrote:
Why did opencog choose scheme as its lisp not common lisp. I recently started learning lisp family of languages, still a newbie. but other than the thing that scheme is lighweight, are they any other reason for using scheme?

--
You received this message because you are subscribed to the Google Groups "opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.

Linas Vepstas

unread,
Feb 7, 2020, 11:19:10 PM2/7/20
to opencog, Nil Geisweiller, link-grammar
On Fri, Feb 7, 2020 at 1:02 AM paarulakan(பாருலகன்) <selva.d...@gmail.com> wrote:
Hi Linas,

Thank you. Can you point me to documentation for 'how the backward-forward things'

The general theory would be explained in textbooks that explain chaining, reasoning, deduction. I assume there's some wikipedia article but I never looked. For how the opencog-ure codebase actually works ... I assume there is a README or whatever in the repo, or wiki pages, but only Nil Geisweiller would know for sure.
 
  most of the communication is happening through atomspace. right?

It depends... in game programming, something like the atomspace would be called "the blackboard" -- you write stuff into it, come back later, its still there. But the atomspace is also like a database, because you can search it. But there's also Atomese which is a kind-of programming language, since you can write programs in it .. or rather, you can write programs to the blackboard, and then later execute them .. or analyze them .. or transform them. (Atomese is very low level. It's kind-of assembly like, so a bit hard for humans, its also slow.)

By contrast, when people say "communication" they usually mean "channel" and channels have no memory (channels have no blackboards).  Funny thing is, you can use "Values" to implement channels.  So atoms specify the plumbing, and values are what flow through those channels.
 

To add more context, I come from deep learning background so I know python, but I want to work on symbolic natural language processing.

Yeah. I want to go in the opposite direction.  Or rather unify the two approaches.  I have ideas but have not gotten very far yet.

I am learning lisp for the same reason.

Switch to scheme now. Its almost exactly the same ... but you will find it slightly cleaner.

I have been working with python for 4 years now

There's a really great book, called SICP (structure and interpretation of computer programs). It teaches scheme from the ground up. Coming from Python (or C/C++) it might seem weird and hard and screwy but somewhere in the middle of chapter 2 you will realize that everything you know about programming is wrong... or rather, is a very special case of something far more generic. 

but it seems unnatural for symbolic NLP.

.. or symbolic anything.  Which is how we arrived at opencog/atomese. It took a while to understand the issues ... and not done yet...

Is there a way to pickup some task and apply opencog framework for that? more concretely sentiment analysis and question answering.

I don't know how to give an easy answer, so let me give a complex one. So, maybe 10 years ago, opencog had a question-answering system. It worked, in a small domain. It worked by parsing natural-language sentences, for example "A thermometer is an instrument" or "A violin is a musical instrument" and converting them to abstract graphs e.g. isA(thermometer, instrument) or isA(violin, mod(instrument, music)) and storing the abstract graphs in the atomspace.  Questions, such as "What is an instrument?" were converted to isA(???, instrument) and a pattern-match was run to find everything that ??? would be. "fill in the blanks".

There are several obvious problems with this, as anyone who tries this finds out. You have to write special cases for all the different question types. One finds oneself curating an ever-more complex ruleset to handle all of these cases. And like any complex ruleset ... its buggy. Its fragile. questions can be misunderstood. Wrong, insane answers can be supplied. No commonsense... (despite this, people have created huge triple-stores and whatnot. I think that's a fundamentally wrong approach).

It was my hope to hand-write enough rules to get a general sense of what that rule-set is like, and then create systems that can learn and adjust the rules. Then I got side tracked solving other issues along the way. .. Such as creating a code base capable of such things.  I still think I "know how" to do this, but it remains experimental and a bit out of reach.  I did learn various important lessons along the way, but cannot quickly summarize.

What's I'm describing is not a "task" but a decade-long research program. If you want a short programming task, there are issue-lists of bugs to fix. Most of these require you to know system internals, though.

Here's one task, but maybe its rather complex... so, one project, https://github.com/opencog/learn wants to induce grammar via unsupervised training on text. (and then later, from grammar, shallow and deep semantics, i.e. "do question answering right")  We've been using English, but it became clear that the correct thing is really to create random grammars, then generate random sentences, and then see if the learning system can learn those random grammars. .. and use that as a scoring system, to track quality of learning.

So the task is ... create random grammars, and write the code to create a collection of random sentences. Sounds easy, but its surprisingly hard. I mean, its not a few days or a week, its a good bit longer. How much I can't say.  Care to try that?  Warning: it might be really very difficult, and so without a principled approach, you'll get nowhere. It will likely force you to understand certain basic concepts about grammars and computation and combinatorial explosion that you probably haven't ever had to think about before ...

-- Linas


On Friday, February 7, 2020 at 3:34:51 AM UTC+5:30, linas wrote:
Hi Paarulakan ..

Why scheme instead of lisp?  Well, scheme is a modern-lisp, having cleaned up assorted messes and inconsistencies and ugly-bits.   Kind of like asking "why C instead of fortran?"

Why guile-scheme instead of some other scheme? Guile offered vastly superior integration into C/C++ than any other scheme out there. I don't know if that's still true or not. Certainly, all  schemes/lisps have "foreign function interfaces" -- FFI's but I don't believe that's enough -- we're not just invoking foreign functions, there's a whole bunch of backward-foreward movement between  the code in each language.

-- Linas

On Thu, Feb 6, 2020 at 4:20 AM paarulakan(பாருலகன்) <selva.d...@gmail.com> wrote:
Why did opencog choose scheme as its lisp not common lisp. I recently started learning lisp family of languages, still a newbie. but other than the thing that scheme is lighweight, are they any other reason for using scheme?

--
You received this message because you are subscribed to the Google Groups "opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/7d99a84e-a980-4bb1-950f-8185362b5f76%40googlegroups.com.


--
cassette tapes - analog TV - film cameras - you

--
You received this message because you are subscribed to the Google Groups "opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email to opencog+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/c2c68511-309d-4a4a-a4a5-ac5834d3c15b%40googlegroups.com.

Linas Vepstas

unread,
Feb 7, 2020, 11:24:45 PM2/7/20
to opencog
Whoops. I realize I misunderstood your question. When you said "backward-foreward" you were not talking about the chainer, but rather the API between the atomspace and scheme.  So a very very different question.  Nothing to do with chaining.

But rather than fumbling an answer by email, do this first ... go through the tutorial examples here: https://github.com/opencog/atomspace/tree/master/examples and go through them in the correct order, from beginning to end. You'll have a rather good understanding once you do, and if there are still questions .. let me know.

--linas



To unsubscribe from this group and stop receiving emails from it, send an email to opencog+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/c2c68511-309d-4a4a-a4a5-ac5834d3c15b%40googlegroups.com.

Amirouche Boubekki

unread,
Feb 11, 2020, 10:07:34 AM2/11/20
to opencog
Le jeu. 6 févr. 2020 à 11:20, paarulakan(பாருலகன்)
<selva.d...@gmail.com> a écrit :
>
> Why did opencog choose scheme as its lisp not common lisp. I recently started learning lisp family of languages, still a newbie. but other than the thing that scheme is lighweight, are they any other reason for using scheme?

I re-discovered AI and discovered AGI via scheme. Various reasons
drove me to learn Scheme:

A) How does look like the direct ancestor of JavaScript?

B) GNU Guile

C) Thruth minimalism

If you find things like car, cdr, cadr, cdar alien, then CL has more
of those. I go back and forth between Chez Scheme and GNU Guile.
Overall the language is the same.
Reply all
Reply to author
Forward
0 new messages