modeling language
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 3601
Quantity Modeling Language 0.1
QML (Quantity Modeling Language) is a thing-based language for scientific and mathematical data modeling. more>>
QML (Quantity Modeling Language) is a "thing"-based language for scientific and mathematical data modeling.
Each "thing" is a quantity which may be associated with either a structure or physical phenomena.
Quantities, in turn, may hold other Quantities or values (numbers or strings). Higher-level data models, which associate or define meanings to various quantities (such as velocity or position), can be built from QML quantities.
The higher-level data model (XML) schema that inherits from QML may be understood, and its instance documents may be parsed into QML documents and objects by the QMLReader.
Enhancements:
- This release adds partial Xerces2 DOM support, and works with Java 1.4 and Java 1.5 (no JAXP DocumentBuilder/Factory support currently).
- The test procedure is a little less chatty.
- Support has been added for testing either/both Crimson/Xerces DOM support.
- (Note: Crimson support only works with Java 1.4, as Java 1.5 interfaces have DOM lvl 2 and 3, which crimson doesnt support).
- This release adds compilerargs, and better build support for different configurations to build.xml.
<<lessEach "thing" is a quantity which may be associated with either a structure or physical phenomena.
Quantities, in turn, may hold other Quantities or values (numbers or strings). Higher-level data models, which associate or define meanings to various quantities (such as velocity or position), can be built from QML quantities.
The higher-level data model (XML) schema that inherits from QML may be understood, and its instance documents may be parsed into QML documents and objects by the QMLReader.
Enhancements:
- This release adds partial Xerces2 DOM support, and works with Java 1.4 and Java 1.5 (no JAXP DocumentBuilder/Factory support currently).
- The test procedure is a little less chatty.
- Support has been added for testing either/both Crimson/Xerces DOM support.
- (Note: Crimson support only works with Java 1.4, as Java 1.5 interfaces have DOM lvl 2 and 3, which crimson doesnt support).
- This release adds compilerargs, and better build support for different configurations to build.xml.
Download (0.16MB)
Added: 2005-11-10 License: Public Domain Price:
1443 downloads
HTML Redemption Language 0.5
HTML Redemption Language, or HRL for short, is an HTML-preprocessor. more>>
HTML Redemption Language, or HRL for short, is an HTML-preprocessor. Its basically a macro package, with built-in Python scripting.
It redeems HTML by adding useful tags such as < include >, < macro >, < if >, and < python >. The last tag allows the web site designer to embed Python "scriptlets" in the HRL source to perform complex preprocessing tasks.
HRL is a preprocessor, designed to be invoked manually by the user to generate the web site. It is not fast enough to generate web pages on the fly. A comparable package is hsc.
<<lessIt redeems HTML by adding useful tags such as < include >, < macro >, < if >, and < python >. The last tag allows the web site designer to embed Python "scriptlets" in the HRL source to perform complex preprocessing tasks.
HRL is a preprocessor, designed to be invoked manually by the user to generate the web site. It is not fast enough to generate web pages on the fly. A comparable package is hsc.
Download (0.034MB)
Added: 2006-11-16 License: GPL (GNU General Public License) Price:
1072 downloads
Open Dice Language 1.5
Open Dice Language project is a language for describing dice rolls. more>>
Open Dice Language project is a language for describing dice rolls.
Open Dice Language is a language for describing dice rolls.
The language is nearly identical to what you see in most role-playing game texts (e.g., "1d20"). It provides several interfaces to the language.
To run in CLI interface mode:
# pushd $ODL_HOME
# java -jar ODL.jar
To run as Widget:
build using `ant widget`
widget is now installed in users widget directory
<<lessOpen Dice Language is a language for describing dice rolls.
The language is nearly identical to what you see in most role-playing game texts (e.g., "1d20"). It provides several interfaces to the language.
To run in CLI interface mode:
# pushd $ODL_HOME
# java -jar ODL.jar
To run as Widget:
build using `ant widget`
widget is now installed in users widget directory
Download (0.49MB)
Added: 2007-01-08 License: BSD License Price:
1019 downloads
ADML language 1.1.4
ADML language is a server-side scripting language with Mysql database suport. more>>
ADML language is a server-side scripting language with Mysql database suport.
About Apache:
Apache HTTP Server is a free software/open source HTTP web server for Unix-like systems (BSD, Linux, and UNIX systems), Microsoft Windows, Novell NetWare and other platforms. Apache is notable for playing a key role in the initial growth of the World Wide Web, and continues to be the most popular web server in use, serving as the reference platform against which other web servers are designed and judged.
Apache features highly configurable error messages, DBMS-based authentication databases, and content negotiation. It is also supported by several graphical user interfaces (GUIs) which permit easier, more intuitive configuration of the server.
The Apache HTTP Server is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation.
<<lessAbout Apache:
Apache HTTP Server is a free software/open source HTTP web server for Unix-like systems (BSD, Linux, and UNIX systems), Microsoft Windows, Novell NetWare and other platforms. Apache is notable for playing a key role in the initial growth of the World Wide Web, and continues to be the most popular web server in use, serving as the reference platform against which other web servers are designed and judged.
Apache features highly configurable error messages, DBMS-based authentication databases, and content negotiation. It is also supported by several graphical user interfaces (GUIs) which permit easier, more intuitive configuration of the server.
The Apache HTTP Server is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation.
Download (0.060MB)
Added: 2006-04-04 License: GPL (GNU General Public License) Price:
1299 downloads
Qore Programming Language 0.6.2
Qore is a modular, multi-threaded, SQL-integrated, weakly- typed scripting language. more>>
Qore is a modular, multi-threaded, SQL-integrated, weakly- typed scripting language with procedural and object-oriented features, powerful and easy-to-use data types, structures, and operators, and a clean and easy-to-learn/read syntax.
Qore Programming Language features Oracle and MySQL DBI drivers, optional TIBCO AE integration, and easy date arithmetic, is very scalable on SMP systems, and much more.
Enhancements:
- 3 new DBI drivers, PostgreSQL, Sybase, and FreeTDS ("pgsql", "sybase", "mssql")
- more support for database and driver-independent programming
- new DatasourcePool class for transparent Datasource connection pooling
- HTTPClient improvements (redirections, basic authentication, proxy support)
- safe signal handling
- complete deadlock detection and thread primitive error handling
- all thread locking primitives now take an optional timeout value
- call references (including object method references that will be executed in the context of the object referenced)
- mysql and oracle driver improvements
- extensive enhancements for exception-safe programming (on_exit, on_error, on_success statements, new classes, etc)
- significant performance improvements
- tibae module improvements
- many new functions and methods, bug fixes, extensive documentation updates, etc
<<lessQore Programming Language features Oracle and MySQL DBI drivers, optional TIBCO AE integration, and easy date arithmetic, is very scalable on SMP systems, and much more.
Enhancements:
- 3 new DBI drivers, PostgreSQL, Sybase, and FreeTDS ("pgsql", "sybase", "mssql")
- more support for database and driver-independent programming
- new DatasourcePool class for transparent Datasource connection pooling
- HTTPClient improvements (redirections, basic authentication, proxy support)
- safe signal handling
- complete deadlock detection and thread primitive error handling
- all thread locking primitives now take an optional timeout value
- call references (including object method references that will be executed in the context of the object referenced)
- mysql and oracle driver improvements
- extensive enhancements for exception-safe programming (on_exit, on_error, on_success statements, new classes, etc)
- significant performance improvements
- tibae module improvements
- many new functions and methods, bug fixes, extensive documentation updates, etc
Download (0.88MB)
Added: 2007-06-14 License: LGPL (GNU Lesser General Public License) Price:
863 downloads
TOM programming language 2.5
Tom is a software environment for defining transformations in Java. more>>
Tom is a software environment for defining transformations in Java. TOM programming language is an extension of Java designed to manipulate tree structures and XML documents. It is compatible with Java: a Java program is a correct Tom program.
Data are represented using an efficient tree based data-structure. Java built-ins (int, char, String, etc) can be used. Tom provides pattern matching facilities to inspect objects and retrieve values. A powerful strategy language can be used to control transformations.
Enhancements:
- The Eclipse plugin is now available again.
- In the %match construct, the sort of the subject is now optional.
- It is automatically inferred from the patterns when possible.
- Gom generates congruence strategies and offers new functionalities, such as the length of a list.
- A new "!" construct can be used to denote anti-patterns.
- The strategy library has been extended such that strategy expressions can be matched, like any other term.
- A strategy can now take another strategy in its argument.
- Support for Java bytecode analysis and transformation has been added.
<<lessData are represented using an efficient tree based data-structure. Java built-ins (int, char, String, etc) can be used. Tom provides pattern matching facilities to inspect objects and retrieve values. A powerful strategy language can be used to control transformations.
Enhancements:
- The Eclipse plugin is now available again.
- In the %match construct, the sort of the subject is now optional.
- It is automatically inferred from the patterns when possible.
- Gom generates congruence strategies and offers new functionalities, such as the length of a list.
- A new "!" construct can be used to denote anti-patterns.
- The strategy library has been extended such that strategy expressions can be matched, like any other term.
- A strategy can now take another strategy in its argument.
- Support for Java bytecode analysis and transformation has been added.
Download (3.7MB)
Added: 2006-10-05 License: GPL (GNU General Public License) Price:
1116 downloads
Felix Programming Language 1.1.1
Felix Programming Language is a high performance, statically typed scripting language. more>>
Felix is an advanced Algol like procedural programming language with a strong functional subsystem. It features ML style typing, first class functions, pattern matching, garabge collection, polymorphism, and has built in support for high performance microthreading, regular expressions and context free parsing.
The system provides a scripting harness so the language can be used like other scripting languages, but underneath it generates native code to obtain high performance.
A key feature of the system is that it uses the C++ object model, and provides an advanced binding sublanguage to support integration with C++ at both the source and object levels, both for embedding C++ data types and functions into Felix, and for embedding Felix into exitsing C++ architectures.
The Felix compiler is written in Objective Caml, and generates ISO C++ which should compile on any platform.
<<lessThe system provides a scripting harness so the language can be used like other scripting languages, but underneath it generates native code to obtain high performance.
A key feature of the system is that it uses the C++ object model, and provides an advanced binding sublanguage to support integration with C++ at both the source and object levels, both for embedding C++ data types and functions into Felix, and for embedding Felix into exitsing C++ architectures.
The Felix compiler is written in Objective Caml, and generates ISO C++ which should compile on any platform.
Download (1.2MB)
Added: 2005-09-27 License: Freely Distributable Price:
1487 downloads
File Selection Language 0.5.1
File Selection Language is a descriptive language for file selection. more>>
File Selection Language (FSL) is a descriptive language for file selection. File Selection Language is used to selectively pick files from a directory structure.
FSL is useful for selective backups, for instance. FSL uses glob patterns as the basic building block.
For fine-tuning the selection, inclusion/exclusion rule combinations and conditional expressions are available. File size and modification date can be used in expressions.
Main features:
- FSL can be used with a command line tool (fsltool) or, for Python programmers, with a programmable interface. For the Python interface, see the documentation of Interpreter.py.
- Several FSL rule files can be combined in a cascading manner similar to CSS. The effect is the same as if the rule files were pasted into a single file.
- Support for both Windows-like and Unix-like paths.
- Strict parse-time type checking to catch as many errors as possible before run-time. For example, you cant say EACH f IF size(5) > 1000 because function size expects filename argument.
<<lessFSL is useful for selective backups, for instance. FSL uses glob patterns as the basic building block.
For fine-tuning the selection, inclusion/exclusion rule combinations and conditional expressions are available. File size and modification date can be used in expressions.
Main features:
- FSL can be used with a command line tool (fsltool) or, for Python programmers, with a programmable interface. For the Python interface, see the documentation of Interpreter.py.
- Several FSL rule files can be combined in a cascading manner similar to CSS. The effect is the same as if the rule files were pasted into a single file.
- Support for both Windows-like and Unix-like paths.
- Strict parse-time type checking to catch as many errors as possible before run-time. For example, you cant say EACH f IF size(5) > 1000 because function size expects filename argument.
Download (0.071MB)
Added: 2005-12-07 License: BSD License Price:
1416 downloads
PATH programming language 0.33
PATH programming language is a unique two-dimensional programming language. more>>
PATH is a very different programming language than what you are probably used to if youre an average programmer. If youve programmed in the language Brainf*ck, youll recognize the memory cell architecture. Also, Befunge programmers will recognize the two-dimensional way that PATH programs are laid out.
PATH programs are laid out on a two-dimensional grid. It follows a path of instructions on the program grid, turning 90 degrees when instructed to (hence the name). A character recognized by the interpreter is called an instruction symbol.
To show you what a PATH program actually looks like, heres a simple program that coincidentally spells out the word "PATH" in large ASCII art letters. (You may recognize it from the PATH program homepage, and its also included with the interpreter.) All it does is make the console beep. Ill explain it in detail later, once you know what all the instruction symbols do.
The interpreter starts at the first "$" symbol it finds and starts heading right. Every time it encounters a valid instruction symbol, it executes it. When it encounters certain special symbols, it may turn in another direction.
The interpreter keeps going until it reaches a "#" symbol. If it encounters a character that is not a valid instruction symbol, it ignores it and skips over it.
<<lessPATH programs are laid out on a two-dimensional grid. It follows a path of instructions on the program grid, turning 90 degrees when instructed to (hence the name). A character recognized by the interpreter is called an instruction symbol.
To show you what a PATH program actually looks like, heres a simple program that coincidentally spells out the word "PATH" in large ASCII art letters. (You may recognize it from the PATH program homepage, and its also included with the interpreter.) All it does is make the console beep. Ill explain it in detail later, once you know what all the instruction symbols do.
The interpreter starts at the first "$" symbol it finds and starts heading right. Every time it encounters a valid instruction symbol, it executes it. When it encounters certain special symbols, it may turn in another direction.
The interpreter keeps going until it reaches a "#" symbol. If it encounters a character that is not a valid instruction symbol, it ignores it and skips over it.
Download (0.010MB)
Added: 2005-04-15 License: MIT/X Consortium License Price:
1654 downloads
Plone Language Tool 1.5
Plone Language Tool is a product which allows you to set the available languages in your Plone site. more>>
Plone Language Tool is a product which allows you to set the available languages in your Plone site.
PloneLanguageTool allows you to set the available languages in your Plone site, select various fallback mechanisms, and control the use of flags for language selection and translations.
When installed, a new Plone control panel action will allow you to select various language options, such as the default and list of allowed languages.
PloneLanguageTool is shipped with Plone beginning in version 2.1 and up.
Enhancements:
- Bug fix release included in Plone 2.5.2.
<<lessPloneLanguageTool allows you to set the available languages in your Plone site, select various fallback mechanisms, and control the use of flags for language selection and translations.
When installed, a new Plone control panel action will allow you to select various language options, such as the default and list of allowed languages.
PloneLanguageTool is shipped with Plone beginning in version 2.1 and up.
Enhancements:
- Bug fix release included in Plone 2.5.2.
Download (0.10MB)
Added: 2007-03-28 License: GPL (GNU General Public License) Price:
942 downloads
Hecl Programming Language 20060803
Hecl Programming Language is a simple, flexible scripting language for Java. more>>
The Hecl Programming Language is a high-level scripting language implemented in Java. Hecl Programming Language is intended to be small, extensible, extremely flexible, and easy to learn and use.
Hecl is intended as a complement to the Java programming language, not a replacement. As such, it tries to do well what Java doesnt, and leaves those tasks to Java for which it is best suited.
Hecl aims to be a very immediate language - you can pick it up and start doing useful things with it quickly. It is also meant to be easy to learn. Where Java is verbose and rigid, Hecl is forgiving and quick to write. For instance, System.out.println("Hello World"); vs puts "Hello World" - 41 keystrokes (shifted letters count double) versus 22. Hecl is built to "scale down".
This makes Hecl ideal for large applications written in Java that would like to provide a user friendly scripting interface, rather than, say, a clunky XML based configuration system.
Hecl is also a small language with a minimal core. The idea is to provide only whats necessary in the language itself, and as needed, add in extensions for specific tasks.
Core Hecl is small enough to run on my Nokia 3100 cell phone as a J2ME application, presenting the interesting possibility of writing scripts, or at some point, maybe even scripting entire applications, for devices running embedded Java. As an example, you can try this MIDlet: Hecl.jar Hecl.jad
<<lessHecl is intended as a complement to the Java programming language, not a replacement. As such, it tries to do well what Java doesnt, and leaves those tasks to Java for which it is best suited.
Hecl aims to be a very immediate language - you can pick it up and start doing useful things with it quickly. It is also meant to be easy to learn. Where Java is verbose and rigid, Hecl is forgiving and quick to write. For instance, System.out.println("Hello World"); vs puts "Hello World" - 41 keystrokes (shifted letters count double) versus 22. Hecl is built to "scale down".
This makes Hecl ideal for large applications written in Java that would like to provide a user friendly scripting interface, rather than, say, a clunky XML based configuration system.
Hecl is also a small language with a minimal core. The idea is to provide only whats necessary in the language itself, and as needed, add in extensions for specific tasks.
Core Hecl is small enough to run on my Nokia 3100 cell phone as a J2ME application, presenting the interesting possibility of writing scripts, or at some point, maybe even scripting entire applications, for devices running embedded Java. As an example, you can try this MIDlet: Hecl.jar Hecl.jad
Download (2.6MB)
Added: 2007-08-05 License: The Apache License 2.0 Price:
810 downloads
X Language 0.7.1
X Language is a programming language. more>>
X Language is a new multi-syntax programming including a portable set of APIs to create console or graphical applications runnable on many platforms (UNIX/X11, Win32, ...). X Language comes with an interpreter, a compiler and a debugger.
X Language is publicly available under the GPL.
Installation
- tar -xzf xlang-0.7.1.tar.gz
- cd xlang-0.7.1
- ./configure
- make
- make install
- ./xlc calc.xc
Enhancements:
- Adding LANG/MATH specifications
- Adding SYS (basic) specifications
- Start implementing the SCR API
<<lessX Language is publicly available under the GPL.
Installation
- tar -xzf xlang-0.7.1.tar.gz
- cd xlang-0.7.1
- ./configure
- make
- make install
- ./xlc calc.xc
Enhancements:
- Adding LANG/MATH specifications
- Adding SYS (basic) specifications
- Start implementing the SCR API
Download (0.35MB)
Added: 2005-04-22 License: GPL (GNU General Public License) Price:
1646 downloads
V language 0.004
V language is a tiny concatenative language implemented for experimentation. more>>
V language is a tiny concatenative language implemented for experimentation.
The source is under Public Domain (un-copyrighted.)
The full featured language is on top of JVM, A native version (in alpha state) is also there in the codebase.
To run it, extract the distribution in any directory and do #gmake run.
gmake
gmake run
V
|
The language is a close relative of postscript, forth and joy. and is stack based. ie:
|2 3 *
=6
|2 3 * 5 +
=11
See status for a tutorial and more info.
The Functions available in V are available in this page: functions
(The releases are out of date and multiple fixes have gone in. Please check out and build rather than use them.)
Example functions in V. getting the roots (with out using the stack shuffling word view)
[quad-formula
[a b c] let
[minisub 0 b -].
[radical b b * 4 a * c * - sqrt].
[divisor 2 a *].
[root1 minisub radical + divisor /].
[root2 minisub radical - divisor /].
root1 root2
].
|2 4 -30 quad-formula ??
=(-5.0 3.0)
using view
[quad-root
[a b c : [0 b - b b * 4 a * c * - sqrt + 2 a * /]] view i
].
|2 4 -30 quad-root ??
=(3)
contrast this with the definition in scheme here
(define quadratic-formula
(lambda (a b c)
(let ([minusb (- 0 b)]
[radical (sqrt (- (* b b) (* 4 ( * a c))))]
[divisor (* 2 a)] )
let ([root1 (/ (+ minusb radical) divisor)]
[root2 (/ (- minusb radical) divisor)])
(cons root1 root2)))))
Definition of Qsort.
[qsort
#definitions
[joinparts [pivot [*list1] [*list2] : [*list1 pivot *list2]] view].
[split_on_first_element uncons [>] split&].
#args starts for binrec. notice that 2 arguments (termination condition
#and its result) are on first line.
[small?] []
[split_on_first_element]
#binrec recurses on the result of split_on_first_element before applying joinparts.
[joinparts]
binrec].
Some explanations.
The first and second lines (terminated by .) are internal function definitions
(Notice how qsort is also terminated by .) . is the definition syntax in V.
The first function joinparts
============================
The function joinpart contains just an application of the operator view.
view is list translator. It takes a list of the form [template : result]
then it tries to apply the template to the current stack. If it can be applied on the
stack, then the arguments named in the template are bound to values in stack. The result is then processed, and all the bound elements in result are replaced by their values.
[pivot [*list1] [*list2] : [*list1 pivot *list2]] view expects 3 arguments on the stack,
the first a single element pivot, then two lists list1 and list2.
It returns a list that is composed of elements of list1 followed by pivot
followed by elements of list2 (as defined in result - RHS of :).
ie:
44 [1 2 3] [5 6 7] [pivot [*list1] [*list2] : [*list1 pivot *list2]] view ??
=> [1 2 3 44 5 6 7]
(The function ?? is used to print out the elements in the stack now.)
The second function split_on_first_element
==========================================
The definition is [uncons [>] split&]
The uncons splits a list into the first element and the rest of the list.
ie:
[1 2 3 4 5] uncons ??
=1 [2 3 4 5]
split& takes two arguments, the first is the function F to split a list with,
and the second the list itself. All elements in the list that passes the function F
is put into the first list, and all that do not are put into the second list.
ie:
[1 2 3 4 5 6 7] [4 >] split& ??
=[5 6 7] [1 2 3 4]
The function F can also take an argument from the stack. so this also works.
4 [1 2 3 4 5 6 7] [>] split& ??
=[5 6 7] [1 2 3 4]
Thus the split_on_first_element takes the first element of a list, and split that
list based on that element as a filter.
binrec
=======
binrec expects 4 arguments,
Arg1 is the terminating condition,
Arg2 is the result if the terminating condition is met.
Arg3 is an executable statement that returns two entities.
The entire binrec statement is performed on each of the
two entities until the terminating condition is met.
Arg4 is what to do with the result of the previous statement.
Algorithm.
Here, the small? checks if the list is empty or contains just one element.
if it is, then the result is arg2 - []
ie:
[] small? ??
=true
[1] small? ??
=true
[1 2 3 4] small? ??
=false
split_on_first_element takes is executed on all lists that are larger than size 1
and as explained above, splits them into two based on the first element.
on the resultent lists, the entire qsort is performed again due to binrec.
The last joinparts takes these elements (pivot list1 list2) which are present now
on the stack, and combines them to produce a single sorted list.
A slightly friendlier function (with out the binrec.)
[qsort
[joinparts [pivot [*list1] [*list2] : [*list1 pivot *list2]] view].
[split_on_first_element uncons [>] split&].
[small?]
[]
[split_on_first_element [list1 list2 : [list1 qsort list2 qsort joinparts]] view i]
ifte].
The binrec and friends are more powerful than the explicit recursion done above, but for people new to concatenative languages, this kind of recursion may look more intuitive.
Enhancements:
- The language has become relatively stable.
- Lots of bugfixes were made in scope handling.
- Tree operations were added.
- Generic combinators were moved out into a separate library.
<<lessThe source is under Public Domain (un-copyrighted.)
The full featured language is on top of JVM, A native version (in alpha state) is also there in the codebase.
To run it, extract the distribution in any directory and do #gmake run.
gmake
gmake run
V
|
The language is a close relative of postscript, forth and joy. and is stack based. ie:
|2 3 *
=6
|2 3 * 5 +
=11
See status for a tutorial and more info.
The Functions available in V are available in this page: functions
(The releases are out of date and multiple fixes have gone in. Please check out and build rather than use them.)
Example functions in V. getting the roots (with out using the stack shuffling word view)
[quad-formula
[a b c] let
[minisub 0 b -].
[radical b b * 4 a * c * - sqrt].
[divisor 2 a *].
[root1 minisub radical + divisor /].
[root2 minisub radical - divisor /].
root1 root2
].
|2 4 -30 quad-formula ??
=(-5.0 3.0)
using view
[quad-root
[a b c : [0 b - b b * 4 a * c * - sqrt + 2 a * /]] view i
].
|2 4 -30 quad-root ??
=(3)
contrast this with the definition in scheme here
(define quadratic-formula
(lambda (a b c)
(let ([minusb (- 0 b)]
[radical (sqrt (- (* b b) (* 4 ( * a c))))]
[divisor (* 2 a)] )
let ([root1 (/ (+ minusb radical) divisor)]
[root2 (/ (- minusb radical) divisor)])
(cons root1 root2)))))
Definition of Qsort.
[qsort
#definitions
[joinparts [pivot [*list1] [*list2] : [*list1 pivot *list2]] view].
[split_on_first_element uncons [>] split&].
#args starts for binrec. notice that 2 arguments (termination condition
#and its result) are on first line.
[small?] []
[split_on_first_element]
#binrec recurses on the result of split_on_first_element before applying joinparts.
[joinparts]
binrec].
Some explanations.
The first and second lines (terminated by .) are internal function definitions
(Notice how qsort is also terminated by .) . is the definition syntax in V.
The first function joinparts
============================
The function joinpart contains just an application of the operator view.
view is list translator. It takes a list of the form [template : result]
then it tries to apply the template to the current stack. If it can be applied on the
stack, then the arguments named in the template are bound to values in stack. The result is then processed, and all the bound elements in result are replaced by their values.
[pivot [*list1] [*list2] : [*list1 pivot *list2]] view expects 3 arguments on the stack,
the first a single element pivot, then two lists list1 and list2.
It returns a list that is composed of elements of list1 followed by pivot
followed by elements of list2 (as defined in result - RHS of :).
ie:
44 [1 2 3] [5 6 7] [pivot [*list1] [*list2] : [*list1 pivot *list2]] view ??
=> [1 2 3 44 5 6 7]
(The function ?? is used to print out the elements in the stack now.)
The second function split_on_first_element
==========================================
The definition is [uncons [>] split&]
The uncons splits a list into the first element and the rest of the list.
ie:
[1 2 3 4 5] uncons ??
=1 [2 3 4 5]
split& takes two arguments, the first is the function F to split a list with,
and the second the list itself. All elements in the list that passes the function F
is put into the first list, and all that do not are put into the second list.
ie:
[1 2 3 4 5 6 7] [4 >] split& ??
=[5 6 7] [1 2 3 4]
The function F can also take an argument from the stack. so this also works.
4 [1 2 3 4 5 6 7] [>] split& ??
=[5 6 7] [1 2 3 4]
Thus the split_on_first_element takes the first element of a list, and split that
list based on that element as a filter.
binrec
=======
binrec expects 4 arguments,
Arg1 is the terminating condition,
Arg2 is the result if the terminating condition is met.
Arg3 is an executable statement that returns two entities.
The entire binrec statement is performed on each of the
two entities until the terminating condition is met.
Arg4 is what to do with the result of the previous statement.
Algorithm.
Here, the small? checks if the list is empty or contains just one element.
if it is, then the result is arg2 - []
ie:
[] small? ??
=true
[1] small? ??
=true
[1 2 3 4] small? ??
=false
split_on_first_element takes is executed on all lists that are larger than size 1
and as explained above, splits them into two based on the first element.
on the resultent lists, the entire qsort is performed again due to binrec.
The last joinparts takes these elements (pivot list1 list2) which are present now
on the stack, and combines them to produce a single sorted list.
A slightly friendlier function (with out the binrec.)
[qsort
[joinparts [pivot [*list1] [*list2] : [*list1 pivot *list2]] view].
[split_on_first_element uncons [>] split&].
[small?]
[]
[split_on_first_element [list1 list2 : [list1 qsort list2 qsort joinparts]] view i]
ifte].
The binrec and friends are more powerful than the explicit recursion done above, but for people new to concatenative languages, this kind of recursion may look more intuitive.
Enhancements:
- The language has become relatively stable.
- Lots of bugfixes were made in scope handling.
- Tree operations were added.
- Generic combinators were moved out into a separate library.
Download (0.10MB)
Added: 2007-07-25 License: MIT/X Consortium License Price:
824 downloads
Mozilla Afrikaans Language Pack
Mozilla Afrikaans Language Pack is an Afrikaans translation of the Mozilla Web browser suite. more>>
The Mozilla Afrikaans Language Pack provides translations of the Mozilla suites Web browser, email program, and editor into Afrikaans.
All functions, errors, menus, and buttons are translated into Afrikaans.
<<lessAll functions, errors, menus, and buttons are translated into Afrikaans.
Download (0.48MB)
Added: 2005-04-15 License: MPL (Mozilla Public License) Price:
1656 downloads
Arena Scripting Language 0.9.12
Arena Scripting Language is a light-weight scripting language. more>>
Arena Scripting Language is a light-weight scripting language. The language uses a syntax and library similar to that of ANSI C, but adds automatic memory management and runtime polymorphism on top of that.
Main features:
- syntax similar to ANSI C
- standard library similar to ANSI C
- automatic memory management
- runtime polymorphism
- support for exceptions
- support for anonymous functions
Enhancements:
- This release changes the system() library function to return the raw exit status as given by the operating system.
<<lessMain features:
- syntax similar to ANSI C
- standard library similar to ANSI C
- automatic memory management
- runtime polymorphism
- support for exceptions
- support for anonymous functions
Enhancements:
- This release changes the system() library function to return the raw exit status as given by the operating system.
Download (.0.18MB)
Added: 2007-08-21 License: BSD License Price:
795 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above modeling language search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed