Tutorial by Examples: p

append([], Bs, Bs). append([A|As], Bs, [A|Cs]) :- append(As, Bs, Cs). append/3 is one of the most well-known Prolog relations. It defines a relation between three arguments and is true if the third argument is a list that denotes the concatenation of the lists that are specified in the firs...
CLP(FD) constraints are provided by all serious Prolog implementations. They allow us to reason about integers in a pure way. ?- X #= 1 + 2. X = 3. ?- 5 #= Y + 2. Y = 3.
CLP(Q) implements reasoning over rational numbers. Example: ?- { 5/6 = X/2 + 1/3 }. X = 1.
Prolog itself can be considered as CLP(H): Constraint Logic Programming over Herbrand terms. With this perspective, a Prolog program posts constraints over terms. For example: ?- X = f(Y), Y = a. X = f(a), Y = a.
Sometimes you want to destructure key under a map which might not be present in the map, but you want a default value for the destructured value. You can do that this way: (def my-map {:a 3 :b 4}) (let [{a :a b :b :keys [c d] :or {a 1 c 2}} my-map] (println ...
Destructurling works in many places, as well as in the param list of an fn: (defn my-func [[_ a b]] (+ a b)) (my-func [1 2 3]) ;= 5 (my-func (range 5)) ;= 3 Destructuring also works for the & rest construct in the param list: (defn my-func2 [& [_ a b]] (+ a b)) (my-func2 1 ...
Destructuring also gives you the ability to interpret a sequence as a map: (def my-vec [:a 1 :b 2]) (def my-lst '("smthg else" :c 3 :d 4)) (let [[& {:keys [a b]}] my-vec [s & {:keys [c d]} my-lst] (+ a b c d)) ;= 10 It is useful for defining functions with named p...
Predicates that produce side effects leave the realm of pure logic. These are for example: writeq/1 read/1 format/2 Side effects are phenomena that cannot be reasoned about within the program. For example, deletion of a file or output on the system terminal.
Predicates that reason about instantiations are called meta-logical. Examples are: var/1 ground/1 integer/1 These predicates are outside the realm of pure monotonic logic programs, because they break properties like commutativity of conjunction. Other predicates that are meta-logical includ...
Predicates that reason about all solutions are extra-logical. These are for example: setof/3 findall/3 bagof/3
CLP(FD) constraints are completely pure relations. They can be used in all directions for declarative integer arithmetic: ?- X #= 1+2. X = 3. ?- 3 #= Y+2. Y = 1.
Our example array: arr=(a b c d e f) Using a for..in loop: for i in "${arr[@]}"; do echo "$i" done 2.04 Using C-style for loop: for ((i=0;i<${#arr[@]};i++)); do echo "${arr[$i]}" done Using while loop: i=0 while [ $i -lt ${#arr[@]} ]; do...
Following code will release the lock. There will be no problem. Behind the scenes lock statement works as try finally lock(locker) { throw new Exception(); } More can be seen in the C# 5.0 Specification: A lock statement of the form lock (x) ... where x is an expression of a referenc...
Partial application means calling a function with less arguments than it has and saving the result as another function (that waits for the rest of the arguments). multiplyBy: Int -> Int -> Int multiplyBy x y = x * y multiplyByTwo : Int -> Int -- one Int has disappeared! we ...
The function toupper will convert a string to upper case (capital letters). For example: BEGIN { greeting = "hello" loud_greeting = toupper(greeting) print loud_greeting } This code will output "HELLO" when run.
Given a C++ source file main.cpp defining a main() function, an accompanying CMakeLists.txt file (with the following content) will instruct CMake to generate the appropriate build instructions for the current system and default C++ compiler. main.cpp (C++ Hello World Example) #include <iostream...
We create a new concurrent process by calling the spawn function. The spawn function will get as parameter a function Fun that the process will evaluate. The return value of the spawn function is the created process identifier (pid). 1> Fun = fun() -> 2+2 end. #Fun<erl_eval.20.52032458&gt...
Enum classes can also declare members (i.e. properties and functions). A semicolon (;) must be placed between the last enum object and the first member declaration. If a member is abstract, the enum objects must implement it. enum class Color { RED { override val rgb: Int = 0xFF0000 ...
enum class Color { RED, GREEN, BLUE } Each enum constant is an object. Enum constants are separated with commas.
A browser's debugging console can be used in order to print simple messages. This debugging or web console can be directly opened in the browser (F12 key in most browsers – see Remarks below for further information) and the log method of the console Javascript object can be invoked by typing the fol...

Page 132 of 691