Download Shareware and Freeware Software for Windows, Linux, Macintosh, PDA

line Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

Serving Software Downloads in 976 Categories, Downloaded 29.546.714 Times

Q 7.3

  Date Added: January 18, 2010  |  Visits: 845

Q

Report Broken Link
Printer Friendly Version


Product Homepage
Download (74 downloads)



Thus, a Q program or "script" is simply a collection of equations which are used to evaluate expressions in a symbolic fashion. The equations establish algebraic identities and are interpreted as rewriting rules in order to reduce expressions to "normal forms". For instance, here is how you define a function sqr which squares its argument by multiplying it with itself: sqr X = X*X; Note that, as in Prolog, capitalized identifiers are used to indicate the variables in an equation, which are bound to the actual values when an equation is applied. Equations may also include a condition part, as in the following definition of the factorial function: fact N = N*fact (N-1) if N>0; = 1 otherwise; Functions on structured arguments are defined by "pattern matching". E.g., the product of a list (denoted in Prolog-like syntax) can be computed with these two equations: prod [] = 1; prod [X|Xs] = X*prod Xs; With this definition, the factorial can now also be defined as follows (the notation [1..N], as in Haskell, denotes an arithmetic sequence): fact N = prod [1..N]; As you can see, the definitions are really just like mathematical equations. The syntax is superficially similar to other modern functional languages like Miranda and Haskell, except that Q is "free-format", i.e., it does not use layout to indicate syntactical structure (thus the semicolon is used to terminate an equation). Due to its term rewriting heritage, Q goes well beyond most other functional languages in that it also allows you to perform computations with symbolic expressions. For instance, with the definition of the sqr function from above, you will find that sqr (X+1) evaluates to (X+1)*(X+1). This might first look like an arcane feature, but it is actually quite useful, because you can try your definitions with symbolic inputs, too. Functional Programming Power Despite its conceptual simplicity, Q is a full-featured functional programming language with a modern syntax, curried function applications (which implies that functions are first-class citizens which can be parameters and results of function applications), dynamic typing (using a single-inheritance OO type system, akin to Smalltalk), exception handling, and POSIX multithreading. Scripts are executed in a bytecode interpreter which byte-compiles scripts in an eye blink and runs them about as fast as interpreted Lisp or Haskell. The interpreter provides a built-in symbolic debugger which allows you to trace the reductions performed during expression evaluation. Just like other modern functional languages, Q supports a terse and abstract mathematical style, and it is not uncommon that the equivalent of dozens of lines of C is just a one- or two-liner in Q. Even more important than raw code size is the high level of abstraction which enables you to handle complex data structures with ease, and tackle complicated programming tasks which are almost hopeless endeavours with conventional programming languages. That is not to say that you wont ever write a line of C again. C has its uses for interfacing to third-party software and for time-critical processing. Like most scripting languages, Q also has a C interface. The Q interpreter is both extensible (new primitives written in C/C++ can be loaded at runtime) and embeddable (Q can be called inside your C/C++ applications). The distribution already includes a number of modules for interfacing to various popular third-party libraries, which makes Q a powerful tool for scientific programming, computer music, multimedia, and other advanced applications. As of version 6.0, Q now also supports SWIG which makes it easy to interface to other libraries if needed. Using Using Q is supposed to be fairly simple: you throw together some equations, start the interpreter and then type in the expressions you wish to evaluate. All this can be done with a few keystrokes, using "Q mode" in GNU Emacs/XEmacs. The distribution also includes a syntax file to enjoy syntax highlighting for the Q language in the advanced KDE editor Kate, and the Windows version comes with a graphical application called "Qpad" for editing and running Q scripts. Of course, you can also run the Q programming utilities from the command line if you prefer that. Whats New in This Release: - This release fixes a critical bug related to the new memoization feature introduced in Q 7.1, which could cause random expressions to remain unevaluated. - Some other bugs in the bytecode compiler and the interpreter were also fixed (see the ChangeLog for details). In particular, left-hand sides of equations may now contain const values in the head, provided that they are followed by extra arguments..

Requirements: No special requirements
Platforms: Linux
Keyword: Equations Interpreter Interpreters Programming Syntax
Users rating: 0/10

License: Freeware Size: 5.3 MB
USER REVIEWS
More Reviews or Write Review


Q RELATED
Programming  -  Neko 1.6.0
Neko is an interpreter and programming language. It has been designed to provide a common runtime for several different languages. Learning and using Neko is very easy, but youre not supposed to directly program in Neko. Instead, you can write a...
337.92 KB  
Programming  -  Funky 1.2.01
Funky is an embeddable interpreter and programming language. When was Fnky created? The very first version of Funky was created during my daughters nap on a snowy sunday afternoon. It was slightly refined one evening while my daughter and my...
74.75 KB  
Programming  -  JOLIE 0.9.2
JOLIE is an interpreter for a new high level programming language, designed for SOAs (Service Oriented Architecture) orchestration (as, for example, WSBPEL by OASIS). The whole program is written entirely in Java to ensure cross-platform...
235.52 KB  
Utilities  -  SmallBASIC 0.10.8
SmallBASIC is a fast and easy to learn BASIC language interpreter ideal for everyday calculations, scripts and prototypes. SmallBASIC includes trigonometric, matrices and algebra functions, a built in IDE, a powerful string library, system, sound,...
614.4 KB  
Programming  -  NodeBrain 0.6.2
The NodeBrain program, nb, is an interpreter of a declarative rule-based language designed for construction of state and event monitoring applications. It is an event correlation engine that can interface with other monitoring components to make...
911.36 KB  
Programming  -  Simple Machine Language interpreter
SML is a "toy" machine language intended to teach basic processor concepts. This website contains an explanation and definition of SML, as well as an interpreter and example SML programs. GPLd source code for the interpreter is available, as well...
225.28 KB  
Entertainment  -  WPdeBC 1.1.0.0
This is BrainCrash interpreter, can programming in Windows Phone. Requirements: Windows Phone 8.1, Windows Phone 8, Windows Phone 7.5
1024 KB  
Development Editors  -  Maria Basic Interpreter 3.0.0.4
Maria Basic Interpreter is a command-line programming tool - interpreter designed to help all PDA users easily code formula/calculations procedures that can be executed on their handheld devices improoving their productivity. The default input...
 
Programming  -  Java RAM Interpreter 1.0
JAM - Java RAM Interpreter simulates Random Access Machines (RAMs). A RAM is a theoretical computer model with an unlimited number of registers of unlimited size and a programming language similar to Assembly. It is used in the book...
27.65 KB  
Libraries  -  Piet::Interpreter 0.03
Piet::Interpreter is a Perl interpreter for the Piet programming language. SYNOPSIS use Piet::Interpreter; my $p = Piet::Interpreter->new(image => my_code.gif); $p->run; Piet is a programming language in which programs look like abstract...
17.41 KB  
NEW DOWNLOADS IN LINUX SOFTWARE, PROGRAMMING
Linux Software  -  Polling Autodialer Software 3.4
ICTBroadcast Auto Dialer software has a survey campaign for telephone surveys and polls. This auto dialer software automatically dials a list of numbers and asks them a set of questions that they can respond to, by using their telephone keypad....
488 B  
Linux Software  -  Total Video Converter Mac Free 3.5.5
Total Video Converter Mac Free developed by EffectMatrix Ltd is the official legal version of Total Video Converter which was a globally recognized brand since 2006. Total Video Converter Mac Free is a free but powerful all-in-one video...
17.7 MB  
Linux Software  -  Skeith mod_log_sql Analyzer 2.10beta2
Skeith is a php based front end for analyzing logs for Apache using mod_log_sql.
47.5 KB  
Linux Software  -  SLAX 6.0+
Slax is a modern, portable, small and fast Linux operating system with a modular approach and outstanding design. Despite its small size, Slax provides a wide collection of pre-installed software for daily use, including a well organized graphical...
190 KB  
Linux Software  -  GTK+ 2.5
GTK+, which stands for the GIMP Toolkit, is a library for creating graphical user interfaces for the X Window System. It is designed to be small, efficient, and flexible. GTK+ is written in C with a very object-oriented approach. Language bindings...
60 MB  
Programming  -  FLEX-db Digital Asset Manager 3.0.9
FLEX-db - an enterprise Digital Asset Manager (DAM). It ingests and links metadata with files, creates thumbnails, and processes files using business rules. FLEX-db has a JSP client, Java app server for file input and output and an EJB metadata...
21.57 MB  
Programming  -  Libicom 0.9.0
The libicom library is a character based dynamicly linked library for Linux. It is used to remotely control the Icom IC-R8500 wide band receiver via an RS232 link. All call and return parameters to the control functions are character string based....
20.48 KB  
Programming  -  dotdesktop 0.3
Dotdesktop library provides ability to parse desktop entry file and access the information in a convenient way. Desktop entry file format is defined by freedesktop.org, it is used to describe information about an application such as the name and...
327.68 KB  
Programming  -  Cedalion for Linux 0.2.6
Cedalion is a programming language that allows its users to add new abstractions and define (and use) internal DSLs. Its innovation is in the fact that it uses projectional editing to allow the new abstractions to have no syntactic limitations.
471.04 KB  
Programming  -  libyasl 0.2
Libyasl is a C++ class library to easily realize TCP/UDP/Multicast clientsand servers in IPv4 and IPv6 environments under GNU/Linux systems.
143.36 KB