This programming language may be used to instruct a computer to perform a task.
Execution method:  Interpreted 

Garbage collected:  Yes 
Parameter passing methods:  By value 
Type strength:  Weak 
Type compatibility:  Duck 
Type expression:  Implicit 
Type checking:  Dynamic 
Lang tag(s):  bracmat 
See Also: 

If you know Bracmat, please write code for some of the tasks not implemented in Bracmat.
Bracmat is an interpreted programming language for symbolic computation. Originally (in the eighties) it was designed as a Computer Algebra system, but it has shown its merits in natural language processing as well. Bracmat has been used in the field of General Relativity for the algebraic computation of Ricci tensors from given spacetime metrics, for the implementation of a dialoguemanager in virtual world project that allowed a user to communicate with software agents in plain English and with gestures, for the analysis of texts in a "Controlled Language"project and for automatic error correction of hundreds of HTML pages. Bracmat has also shown its utility in some realworld applications: for example to identify persons, companies etc. in pretagged texts that must be anonymised. The to date most advanced application of Bracmat is as workflow planner and executor. Instead of letting the user choose between software tools, which the user may not know very well, the planner asks the user to specify what kind of output she wants. With this information the planner computes all (not necessarily sequential) combinations of tools and their parameter settings that combine into workflows that are guaranteed to produce the specified output from the given input. The computed list is condensed into a short format that highlights the differences between the workflows for the user and leaves out all that is of less importance.
Bracmat is almost unique in the combination of on the one hand allowing associative pattern matching, in strings as well as in tree structures, and on the other hand allowing expression evaluation during a match operation.
Bracmat is inspired by SNOBOL4 (pattern matching, success/failure), by Lisp (Bracmat programs are made of the same stuff as Bracmat data), by Prolog (backtracking) and a little bit by objectoriented languages. The first implementation was for an ARM based computer. The ARM processor's 4bit condition code selector on every instruction were the inspiration for Bracmat's flags ~ [ ! !! ` @ % > < # / ? that can be set on any node in an expression. For example, the ! and ? flags turn a symbol into a variable. When flags are combined, care has been taken that the semantics of a combination of flags is close to a combination of the semantics of each flag.
The Bracmatinterpreter is written in Standard C and can be compiled for many platforms, such as Epoc, Windows, Mac OS (including OS X), Linux and Unix. The compiled code measures about 130 KB (statically linked), depending on the platform. The runtime is not very memory hungry, as compared to e.g. Java. Bracmat can be compiled for 32 and 64 bit systems.
Subcategories
This category has the following 3 subcategories, out of 3 total.
Pages in category "Bracmat"
The following 294 pages are in this category, out of 294 total.
2
A
 A+B
 ABC Problem
 Abundant, deficient and perfect number classifications
 Accumulator factory
 Ackermann function
 Add a variable to a class instance at runtime
 AKS test for primes
 Amb
 Anagrams
 Anagrams/Deranged anagrams
 Anonymous recursion
 Apply a callback to an array
 Arbitraryprecision integers (included)
 Arithmetic/Complex
 Arithmetic/Integer
 Array concatenation
 Arrays
 Associative array/Creation
 Associative array/Iteration
 Averages/Arithmetic mean
 Averages/Median
 Averages/Simple moving average
C
 Call a function
 Call an object method
 Cartesian product of two or more lists
 Casesensitivity of identifiers
 Catalan numbers
 Catamorphism
 Character codes
 Chinese remainder theorem
 Classes
 Closures/Value capture
 Combinations
 Combinations and permutations
 Combinations with repetitions
 Comma quibbling
 Commandline arguments
 Comments
 Compound data type
 Conditional structures
 Convert decimal number to rational
 Copy a string
 Count in octal
 Count occurrences of a substring
 Create a file
 Create an HTML table
 CSV to HTML translation
 Cuban primes
D
E
F
 Factorial
 Factors of a Mersenne number
 Fibonacci nstep number sequences
 Fibonacci sequence
 File input/output
 File size
 Filter
 Find limit of recursion
 First class environments
 Firstclass functions
 FizzBuzz
 Flatten a list
 Flowcontrol structures
 Floyd's triangle
 Fractran
 Function composition
 Function definition
G
H
I
K
L
 Largest int from concatenated ints
 Last letterfirst letter
 Leap year
 Least common multiple
 Left factorials
 Letter frequency
 Levenshtein distance
 Linear congruential generator
 List comprehensions
 Literals/Integer
 Literals/String
 Logical operations
 Longest common subsequence
 Lookandsay sequence
 Loops/Continue
 Loops/Downward for
 Loops/For
 Loops/Foreach
 Loops/Infinite
 Loops/N plus one half
 Loops/While
 LucasLehmer test
 Luhn test of credit card numbers
M
N
O
P
 Palindrome detection
 Pangram checker
 Parse commandline arguments
 Parsing/RPN calculator algorithm
 Partial function application
 Pascal's triangle
 Pattern matching
 Perfect numbers
 Permutations
 Permutations/Derangements
 Phrase reversals
 Pi
 Power set
 Price fraction
 Primality by trial division
 Program termination
 Pythagorean triples
R
 Range expansion
 Range extraction
 Read a file line by line
 Read entire file
 Real constants and functions
 Regular expressions
 Remove duplicate elements
 Rename a file
 Repstring
 Repeat a string
 Return multiple values
 Reverse a string
 Reverse words in a string
 Roman numerals/Decode
 Roman numerals/Encode
 Rosetta Code/Count examples
 Rosetta Code/Rank languages by popularity
 Runlength encoding
 Runtime evaluation/In an environment
S
 Sailors, coconuts and a monkey problem
 Same Fringe
 Scope modifiers
 Search a list
 Selfreferential sequence
 Semiprime
 Semordnilap
 Send an unknown method call
 Set consolidation
 Shell oneliner
 Shortcircuit evaluation
 Sieve of Eratosthenes
 Simple database
 Singlylinked list/Element definition
 Solve a Hidato puzzle
 Solve a Holy Knight's tour
 Sort an array of composite structures
 Sort an integer array
 Sort disjoint sublist
 Sorting algorithms/Quicksort
 Special characters
 Special variables
 Stable marriage problem
 Stack
 State name puzzle
 String append
 String case
 String comparison
 String concatenation
 String interpolation (included)
 String length
 String matching
 String prepend
 Strip a set of characters from a string
 Strip comments from a string
 Strip control codes and extended characters from a string
 Strip whitespace from a string/Top and tail
 Substring
 Substring/Top and tail
 Subtractive generator
 Sudoku
 Sum and product of an array
 Sum of a series
 Sum of squares
 Symmetric difference
T
 Temperature conversion
 Terminal control/Clear the screen
 Terminal control/Display an extended character
 Terminal control/Ringing the terminal bell
 Text processing/Max licenses in use
 The Twelve Days of Christmas
 Time a function
 Tokenize a string
 Top rank per group
 Topological sort
 Towers of Hanoi
 Tree traversal
 Truncatable primes
 Truncate a file
 Twelve statements