Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #51713

Re: A New Forth

From Paul Rubin <no.email@nospam.invalid>
Newsgroups comp.lang.forth
Subject Re: A New Forth
Date 2016-10-08 12:33 -0700
Organization A noiseless patient Spider
Message-ID <87wphivdne.fsf@nightsong.com> (permalink)
References <9dc136b0-5a06-4bad-b719-0e94358896f1@googlegroups.com> <1f740c55-e4d9-4e0f-993c-346e55ff7438@googlegroups.com>

Show all headers | View raw


trans <transfire@gmail.com> writes:
> the Forth I am working on will be typed. ... primarily for the
> multi-method dispatching it will allow...
>     : foo ( int int -- int ) ... ;
>     : foo ( int int int -- int ) ... ;
> When deciding which foo to use based on the type signature if there
> are three ints on the stack, does it use the first or the second
> definition?

Type based dispatching like C++'s sounds like a poor idea for a
Forth-like language.  The two basic choices are: 1) keeping with Forth's
interactive style, let the second definition overwrite the first one
while emitting a warning; or, 2) raise a compile-time error.

> say if a word returns a float vs an integer based on some runtime
> condition.  I really don't think I want to restrict return values to a
> single concrete signature.

Then you're not writing a typed language.

> That would make compilation a lot easier, but I fear it would make
> programming in this Forth feel far too constrained. Am I right about
> that?

No not really.  Forth makes what you're describing possible, but
preferred Forth style is to avoid it and stay with static signatures.

> I've been trying to find out how other static compilers handle this
> situation but haven't found out yet.

With variant types aka tagged unions.

Stepping back a little, can I ask what the purpose of this project is?
Do you have an application area and target where you want to use the
compiler you're writing?  Are you mostly just writing a compiler for fun
(and there's nothing wrong with that)?  Either way but especially if the
latter, why Forth?  Forth is the way it is partly because of its
traditional philosophy of keeping its implementation very simple.  There
are fancy implementations out there, but they were written mostly to
bring better performance to programs written with familiar Forth
techniques.

It sounds like you've been using C++.  If you want exposure to fancier
uses of type systems, you might give Haskell a try.
http://learnyouahaskell.com is a good place to start.

Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

A New Forth tabcomputing@gmail.com - 2016-10-07 17:56 -0700
  Re: A New Forth Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> - 2016-10-07 23:05 -0400
    Re: A New Forth Walter Banks <walter@bytecraft.com> - 2016-10-08 10:07 -0400
  Re: A New Forth anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-08 13:08 +0000
    Re: A New Forth trans <transfire@gmail.com> - 2016-10-08 10:54 -0700
      Re: A New Forth anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-08 18:03 +0000
        Re: A New Forth trans <transfire@gmail.com> - 2016-10-08 11:13 -0700
    Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-08 11:17 -0700
    Re: A New Forth hughaguilar96@gmail.com - 2016-10-13 14:44 -0700
      Re: A New Forth hughaguilar96@gmail.com - 2016-10-13 14:53 -0700
        Re: A New Forth hughaguilar96@gmail.com - 2016-10-13 15:04 -0700
        Re: A New Forth rickman <gnuarm@gmail.com> - 2016-10-13 22:55 -0400
  Re: A New Forth trans <transfire@gmail.com> - 2016-10-08 12:11 -0700
    Re: A New Forth albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-10-08 21:31 +0200
      Re: A New Forth trans <transfire@gmail.com> - 2016-10-08 17:07 -0700
    Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-08 12:33 -0700
      Re: A New Forth missycurl@gmail.com - 2016-10-08 12:54 -0700
        Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-08 13:29 -0700
      Re: A New Forth trans <transfire@gmail.com> - 2016-10-08 17:28 -0700
        Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-08 18:00 -0700
          Re: A New Forth trans <transfire@gmail.com> - 2016-10-09 09:00 -0700
            Re: A New Forth luser droog <mijoryx@yahoo.com> - 2016-10-09 11:19 -0700
            Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-10 01:09 -0700
              Re: A New Forth trans <transfire@gmail.com> - 2016-10-10 08:24 -0700
                Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-10 13:28 -0700
                Re: A New Forth "Elizabeth D. Rather" <erather@forth.com> - 2016-10-10 11:14 -1000
                Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-10 15:11 -0700
                Re: A New Forth Doug Hoffman <glidedog@gmail.com> - 2016-10-11 21:46 -0400
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-10 16:26 -0700
                Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-10 18:58 -0700
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-10 20:15 -0700
              Re: A New Forth Ron Aaron <rambamist@gmail.com> - 2016-10-11 07:26 +0300
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-11 03:09 -0700
                Re: A New Forth Ron Aaron <rambamist@gmail.com> - 2016-10-11 13:27 +0300
                Re: A New Forth lawrencedo99@gmail.com - 2016-10-13 18:41 -0700
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-13 19:08 -0700
                Re: A New Forth Ron Aaron <rambamist@gmail.com> - 2016-10-14 07:58 +0300
          Re: A New Forth franck.bensusan@gmail.com - 2016-10-09 11:09 -0700
          Re: A New Forth lawrencedo99@gmail.com - 2016-10-13 18:45 -0700
        Re: A New Forth albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-10-09 10:54 +0200
          Re: A New Forth missycurl@gmail.com - 2016-10-09 07:35 -0700
          Re: A New Forth Melzzzzz <mel@zzzzz.com> - 2016-10-11 06:23 +0200
          Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-10 21:31 -0700
          Re: A New Forth franck.bensusan@gmail.com - 2016-10-15 00:26 -0700
        Re: A New Forth Melzzzzz <mel@zzzzz.com> - 2016-10-13 19:16 +0200
          Re: A New Forth trans <transfire@gmail.com> - 2016-10-13 11:46 -0700
            Re: A New Forth Melzzzzz <Melzzzzz@zzzzz.com> - 2016-10-13 19:04 +0000
        Re: A New Forth "WJ" <w_a_x_man@yahoo.com> - 2016-10-15 20:07 +0000
    Re: A New Forth luser droog <mijoryx@yahoo.com> - 2016-10-08 13:56 -0700
  Re: A New Forth polymorph self <jackvanc3@gmail.com> - 2016-10-08 19:58 -0700
  Re: A New Forth Chris Curl <ccurl609@gmail.com> - 2016-10-10 19:22 -0700
    Re: A New Forth trans <transfire@gmail.com> - 2016-10-10 20:18 -0700
      Re: A New Forth Chris Curl <ccurl609@gmail.com> - 2016-10-11 11:14 -0700
        Re: A New Forth trans <transfire@gmail.com> - 2016-10-11 14:22 -0700
          Re: A New Forth jim.brakefield@ieee.org - 2016-10-11 15:11 -0700
            Re: A New Forth trans <transfire@gmail.com> - 2016-10-11 18:03 -0700
          Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-11 15:13 -0700
            Re: A New Forth Chris Curl <ccurl609@gmail.com> - 2016-10-11 17:52 -0700
              Re: A New Forth trans <transfire@gmail.com> - 2016-10-11 19:55 -0700
              Re: A New Forth hughaguilar96@gmail.com - 2016-10-13 14:21 -0700
                Re: A New Forth hughaguilar96@gmail.com - 2016-10-13 14:36 -0700
            Re: A New Forth trans <transfire@gmail.com> - 2016-10-11 18:08 -0700
              Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-11 18:21 -0700
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-11 20:01 -0700
        Re: A New Forth trans <transfire@gmail.com> - 2016-10-11 20:33 -0700
          Re: A New Forth Doug Hoffman <glidedog@gmail.com> - 2016-10-12 01:15 -0400
            Re: A New Forth trans <transfire@gmail.com> - 2016-10-12 05:44 -0700
              Re: A New Forth Doug Hoffman <glidedog@gmail.com> - 2016-10-12 11:51 -0400
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-12 09:47 -0700
                Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-12 10:08 -0700
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-12 11:48 -0700
                Re: A New Forth Paul Rubin <no.email@nospam.invalid> - 2016-10-12 11:56 -0700
                Re: A New Forth Doug Hoffman <glidedog@gmail.com> - 2016-10-12 13:41 -0400
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-12 11:57 -0700
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-12 12:02 -0700
                Re: A New Forth Doug Hoffman <glidedog@gmail.com> - 2016-10-13 09:24 -0400
                Re: A New Forth Doug Hoffman <glidedog@gmail.com> - 2016-10-13 10:33 -0400
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-13 10:05 -0700
                Re: A New Forth jim <anon@example.com> - 2016-10-12 19:01 +0100
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-13 09:53 -0700
                Re: A New Forth fred <anon@example.com> - 2016-10-14 12:37 +0100
                Re: A New Forth jim <anon@example.com> - 2016-10-14 14:49 +0100
                Re: A New Forth trans <transfire@gmail.com> - 2016-10-14 07:20 -0700
                Re: A New Forth jim <anon@example.com> - 2016-10-15 11:58 +0100
                Re: A New Forth tabcomputing@gmail.com - 2016-10-15 10:21 -0700
          Re: A New Forth Chris Curl <ccurl609@gmail.com> - 2016-10-12 04:33 -0700
  Re: A New Forth Whammo <sidciavic@gmail.com> - 2016-10-15 12:23 -0700

csiph-web