Related articles |
---|
New Programming Language: Salmon chris@chriswilson.info (Chris) (2011-11-02) |
Re: New Programming Language: Salmon kaz@kylheku.com (Kaz Kylheku) (2011-11-03) |
Re: New Programming Language: Salmon chris@chriswilson.info (Chris) (2011-11-03) |
From: | Kaz Kylheku <kaz@kylheku.com> |
Newsgroups: | comp.compilers |
Date: | Thu, 3 Nov 2011 04:37:18 +0000 (UTC) |
Organization: | A noiseless patient Spider |
References: | 11-11-016 |
Keywords: | design |
Posted-Date: | 03 Nov 2011 15:48:16 EDT |
On 2011-11-02, Chris <chris@chriswilson.info> wrote:
> I've created a new general purpose programming language and a full
> interpreter for it. I'm looking for early adopters to give it a try
> and give feedback.
I had a good look at your reference manual, etc.
My honest opinion is that you've created a fairly uninteresting 'blub'
language, with new syntax and terminology for doing pretty ordinary things.
For instance:
quarks: objects that enumerate and identify, such that two quarks are
either equal or unequal. New term for "symbol", with limitations.
tagalongs: your new term for "property lists" that can be attached to objects,
easily created with a couple of macros in Lisp and either weak hash tables
or finalizations (non-ANSI, but common extensions) to build the assocation
in a way that doesn't prevent garbage collection of unused objects.
In about 15 minutes of coding, I can make myself the syntax which supports
the following:
(define-tagalong foo nil) ;; establish default value
;; associate some-object with 42 under the key 'foo
(setf (get-tagalong some-object 'foo) 42)
;; retrieve it:
(get-tagalong some-object 'foo)
;; retrieve unassigned tagalong
(get-tagalong "string" 'foo) ;; yields nil, the default value
;; retrieve undeclared tatalong
(get-tagalong "string" 'blah) ;; error: blah has no default value
;; shorthand macro
(with-tagalongs (foo bar) some-object
;; now local symbols foo and bar alias for tagalongs 'foo and 'bar
;; of some-object
(setf foo 42) ;; same as (setf (get-tagalong some-object 'foo) 42)
)
(do-tagalongs some-object (indicator value)
;; this body iterates over the key/value tagalog pairs of some-object
)
You've bogged down tagalongs with the possiblity of static type declarations,
which don't really add much value; they are just ways to make the language
get in your way.
> I believe there's always room for new ideas,
Why don't you introduce Salmon on Rosetta Code and try implementing
a few of the tasks, so people can get some rough idea for how it stacks up
against numerous other languages?
In Rosetta, on the same page, people can see how a given task is solved in
Python, Lisp, SNOBOL 4 (!), Visual Basic, Salmon, C++, you name it.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.