1999Q2/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] Properties of computer languages -->
<!--X-From-R13: Qlaor eh Fnera <plaorNzhd.bet> -->
<!--X-Date: Thu, 17 Jun 1999 08:39:40 &#45;0700 -->
<!--X-Message-Id: 199906170904.EAA12262#laurel,actlab.utexas.edu -->
<!--X-Content-Type: text/plain -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, [MUD-Dev] Properties of computer languages</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:cynbe#muq,org">
</head>
<body background="/backgrounds/paperback.gif" bgcolor="#ffffff"
      text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000">

  <font size="+4" color="#804040">
    <strong><em>MUD-Dev<br>mailing list archive</em></strong>
  </font>
      
<br>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
<br clear=all><hr>
<!--X-Body-Begin-->
<!--X-User-Header-->
<!--X-User-Header-End-->
<!--X-TopPNI-->

Date:&nbsp;
[&nbsp;<a href="msg00833.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00835.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg00833.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00843.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#00830">Author</A>
&nbsp;|&nbsp;<A HREF="#00830">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#00830">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>[MUD-Dev] Properties of computer languages</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
<LI><em>Subject</em>: [MUD-Dev] Properties of computer languages</LI>
<LI><em>From</em>: Cynbe ru Taren &lt;<A HREF="mailto:cynbe#muq,org">cynbe#muq,org</A>&gt;</LI>
<LI><em>Date</em>: Thu, 17 Jun 1999 04:04:52 -0500</LI>
<LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
<LI><em>Sender</em>: <A HREF="mailto:mud-dev-admin#kanga,nu">mud-dev-admin#kanga,nu</A></LI>
</UL>
<!--X-Head-of-Message-End-->
<!--X-Head-Body-Sep-Begin-->
<HR>
<!--X-Head-Body-Sep-End-->
<!--X-Body-of-Message-->
<PRE>

Caliban Tiresias Darklock &lt;caliban#darklock,com&gt; asks: 

| I'm in the process of redesigning the macro language of my game, and I
| recall seeing at one time a list... a very short list... of things that a
| computer language absolutely required. Sort of a bare-bones "what you need
| to do everything you need to do in any given program". Two of the things on
| the list were conditionals (if/then/else) and iteration (for/next and
| do/while). There were either two or three other things listed, but I don't
| remember what they were. Does anyone here have a memory spark going off as
| to what list I'm talking about and where I can find it? I think one of the
| other things was something along the lines of subroutine/function declaration.

Reminds me of a question I ask C novices sometimes:  How many of
C's control structures can be dispensed with?  (Hint:  More than
you'd think at first blush.)

Answer:  If you have array indexing and arrays of functions,
you can do 'if' as 'ary[a!=b](x)', say.  So all the
conditionals can be dispensed with.  If you have recursion,
you can also dispense with all iteration constructs, of
course.  So the answer is that in principle, basically
-none- of the C 'control constructs' as usually defined
are actually necessary. :)


In general, a conditional of some sort, and recursion, are the
practical minimal set you're thinking of.  Look at the languague which
Scheme compiles down to after all macro expansion is done on something
like the Guy Steele's Rabbit compiler, and you'll see more or less
this.

You'll note that every datastructure can be understood as an example
of function definition if you wish: Guy L Steele has a classic paper
called I think "Lamdba, the Ultimate Constructor" elaborating on that.
So function definition, function invocation and a conditional get you
basically everything.  (See John Conway, say, for building up all of
arithmetic from this sort of basis.) As a practical matter, a constant
or two like zero can be useful, of course. :)

If you want to get pedantically extreme, look at the lambda calculus
literature, which for example shows you how to do recursion using
only the 'paradoxical' Y-combinator.  (If memory serves me right.)
The lambda calculus probably strips things down further than you
really care to go, however. :)

 Cynbe




_______________________________________________
MUD-Dev maillist  -  MUD-Dev#kanga,nu
<A  HREF="http://www.kanga.nu/lists/listinfo/mud-dev">http://www.kanga.nu/lists/listinfo/mud-dev</A>


</PRE>

<!--X-Body-of-Message-End-->
<!--X-MsgBody-End-->
<!--X-Follow-Ups-->
<HR>
<ul compact><li><strong>Follow-Ups</strong>:
<ul>
<li><strong><A NAME="00843" HREF="msg00843.html">Re: [MUD-Dev] Properties of computer languages</A></strong>
<ul compact><li><em>From:</em> "Travis S. Casey" &lt;efindel#io,com&gt;</li></ul>
</UL></LI></UL>
<!--X-Follow-Ups-End-->
<!--X-References-->
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg00833.html">Re: [MUD-Dev] Properties of computer languages</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg00835.html">Re: [MUD-Dev] Properties of computer languages</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg00833.html">Re: [MUD-Dev] Properties of computer languages</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg00843.html">Re: [MUD-Dev] Properties of computer languages</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#00830"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#00830"><STRONG>Thread</STRONG></A></LI>
</UL>
</LI>
</UL>

<!--X-BotPNI-End-->
<!--X-User-Footer-->
<!--X-User-Footer-End-->
<ul><li>Thread context:
<BLOCKQUOTE><UL>
<LI><STRONG>Re: [MUD-Dev] Properties of computer languages</STRONG>, <EM>(continued)</EM>
<ul compact>
<ul compact>
<LI><strong><A NAME="00845" HREF="msg00845.html">Re: [MUD-Dev] Properties of computer languages</A></strong>, 
Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Thu 17 Jun 1999, 23:56 GMT
<UL>
<LI><strong><A NAME="00846" HREF="msg00846.html">Re: [MUD-Dev] Properties of computer languages</A></strong>, 
Joey Hess <a href="mailto:joey#kitenet,net">joey#kitenet,net</a>, Fri 18 Jun 1999, 00:34 GMT
</LI>
</UL>
</LI>
</ul>
<LI><strong><A NAME="00856" HREF="msg00856.html">Re: [MUD-Dev] Properties of computer languages</A></strong>, 
Mik Clarke <a href="mailto:mikclrk#ibm,net">mikclrk#ibm,net</a>, Fri 18 Jun 1999, 20:43 GMT
</LI>
<LI><strong><A NAME="00833" HREF="msg00833.html">Re: [MUD-Dev] Properties of computer languages</A></strong>, 
David95037 <a href="mailto:David95037#aol,com">David95037#aol,com</a>, Thu 17 Jun 1999, 15:39 GMT
</LI>
<LI><strong><A NAME="00830" HREF="msg00830.html">[MUD-Dev] Properties of computer languages</A></strong>, 
Cynbe ru Taren <a href="mailto:cynbe#muq,org">cynbe#muq,org</a>, Thu 17 Jun 1999, 15:39 GMT
<UL>
<LI><strong><A NAME="00843" HREF="msg00843.html">Re: [MUD-Dev] Properties of computer languages</A></strong>, 
Travis S. Casey <a href="mailto:efindel#io,com">efindel#io,com</a>, Thu 17 Jun 1999, 22:44 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="00848" HREF="msg00848.html">Re: [MUD-Dev] Properties of computer languages</A></strong>, 
Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Fri 18 Jun 1999, 01:40 GMT
</LI>
<LI><strong><A NAME="00851" HREF="msg00851.html">Re: [MUD-Dev] Properties of computer languages</A></strong>, 
David95037 <a href="mailto:David95037#aol,com">David95037#aol,com</a>, Fri 18 Jun 1999, 14:19 GMT
<UL>
<LI><strong><A NAME="00859" HREF="msg00859.html">Re: [MUD-Dev] Properties of computer languages</A></strong>, 
Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Sat 19 Jun 1999, 03:16 GMT
</LI>
</UL>
</LI>
</ul>
</LI>
</UL></BLOCKQUOTE>

</ul>
<hr>
<center>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
</center>
<hr>
</body>
</html>