Re: ADTs in Euphoria

new topic     » goto parent     » topic index » view thread      » older message » newer message

At 18:44 20/12/00 -0500, Ray Smith kindly replied:

>Hi sns,
>
>Without going into details .... cause I'm just a bit busy now ...
>you might like to look in Euphoria\demo directory.
>
>There is a demo prograsm called tree.ex - that counts words by adding
>them to a binary tree.
>
>There is also animal.ex which states that it uses a "tree like" structure
>for a very simple Expert system that guesses animals.
>
>Hope this hepls.
>
>Ray Smith
>
>
>
>On Thu, 21 Dec 2000 12:39:23 +1300, S Ns <sw at PARADISE.NET.NZ> wrote:
>
>>In reply to my query:
>>
>>>Hi I'm a newbie evaluating euphoria.
>>>
>>>Could someone briefly illustrate (or give a reference to some
>>>info on) how one would implement a doubly-linked list or
>>>binary search tree in Euphoria?
>>>
>>>Thanks in advance.
>>>
>>>--sns
>>
>>Dan Moyer kindly replied:
>>-------------------------
>>Not sure if this is what you mean, but in the RDS archives,
>>http://www.rapideuphoria.com/contrib.htm
>>Jiri Babor has "Associative Lists", Routines for manipulating lists of
>>key/value pairs.
>>
>>Can download directly from:
>>http://www.rapideuphoria.com/list.zip
>>
>>and Jeff Fielding expanded:
>>---------------------------
>>Both of these are a little more difficult, and less effective implemented
>>in Euphoria than implemented in C since Euphoria does not support
>>pointers, and it already has a dynamic array - the sequence.
>>
>>Doubly linked lists can be completely replaced by a simple sequence, since
>>sequences are dynamic arrays. Instead of dealing with pointers etc. you
>>can just use append, prepend, & and subscripts to get the same
>>functionality.
>>
>>Binary search trees can also be implemented in multi-dimensional
>>sequences, though all the subscripting would probably make them rather
>>ineffective.
>>
>>Of course, you could use allocate, peek, poke, and free to do a C-like
>>implementation of the above. However, these are all rather expensive
>>functions and it is much faster to use sequences and other built-in
>>Euphoria data types.
>>---------------------------------------------------------------------
>>
>>I'd like to be able to use Euphoria for more than
>>just little scripts.
>>
>>From the version 2.2 reference manual:
>>-------------------------------------
>><quote>
>>
>> 2.3 Euphoria versus Conventional Languages
>> ==========================================
>>
>> By basing Euphoria on this one, simple, general, recursive
>> data structure, a tremendous amount of the complexity
>> normally found in programming languages has been avoided.
>> The arrays, structures, unions, arrays of records,
>> multidimensional arrays, etc. of other languages can all
>> be easily represented in Euphoria with sequences. **So can
>> higher-level structures such as lists, stacks, queues, trees etc.**
>>
>></quote>
>>
>>The last line talks about a capability that is important to
>>me.  I think it can be done 'fairly' efficiently after all
>>RDS mention porting apps from C to Eu and advertise this
>>service on their website.
>>
>>I don't know if this is possible, but I'll just sketch
>>it anyway as indication.  Look at a binary tree:
>>
>>The node is a 3-element sequence where element:
>>1. is the data (this could be a record - represented as a
>>   sequence of course)
>>2. is the left child which is a node sequence like the
>>   parent (recursive)
>>3. is the right child like 2.
>>
>>I don't know if 2 and 3 are possible in this fashion.
>>
>>I don't think that this is the same as Jeff's
>>mutlidimensional sequence.
>>
>>If this is possible in Eu then we have to implement some
>>operations: e.g. assume our tree is tree1:
>>
>>our interface operations could be:
>>
>> tree_new(tree1)
>> tree_add(tree1, some_data)
>> tree_find(tree1, some_data)
>> tree_copy(tree2, tree1)
>>
>>Clearly, we need a function to traverse the tree.
>>
>>So,
>>if we can represent the node and a traversal function
>>we are most of the way there.
>>
>>Thoughts?
>>
>>Thanks in advance.
>>
>>-- sns

---------------------------------------------------------

Yep, that's what I was looking for.  Thank you Ray.

--sns

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu