Examine individual changes

Abuse Filter navigation (Home | Recent filter changes | Examine past edits | Abuse log)
Jump to navigation Jump to search

This page allows you to examine the variables generated by the Abuse Filter for an individual change.

Variables generated for this change

VariableValue
Edit count of the user (user_editcount)
259
Name of the user account (user_name)
'TenBillionPlusOne'
Age of the user account (user_age)
3037072
Page ID (page_id)
22626
Page namespace (page_namespace)
0
Page title (without namespace) (page_title)
'Hakerh'
Full page title (page_prefixedtitle)
'Hakerh'
Action (action)
'edit'
Edit summary/reason (summary)
''
Old content model (old_content_model)
'wikitext'
New content model (new_content_model)
'wikitext'
Old page wikitext, before the edit (old_wikitext)
''''Hakerh''' is an esolang by [[User:TBPO]] that imitates [[User:Hakerh400]]'s esolangs. I made a timestamp below to mark where my transformation into Hakerh400 begun: [[User:TenBillionPlusOne|TB]][[User talk:TenBillionPlusOne|PO]] 11:32, 15 May 2025 (UTC) == Syntax == The program consists of function definitions: f(X) = Y Where uppercase letters (except T, F and N) are any expressions. T, F and N are built-in functions that return themselves. f returns a function with name f. <code>X(Y)</code> calls function X with argument Y. <code>X[Y]</code> returns Y if <code>X[Y]</code> is T and N if isn't. === Syntactic sugar === There is some syntactic sugar to simplify and shorten the code. For example, <code>let a, b</code> is equivalement to: a(x) = a b(x) = b <code>f(X,Y)</code> is equivalement to <code>f(X)(Y)</code>, and <code>f(X,Y) = Z</code> is equivalement to: f(X) = g g(Y) = Z <code>f(X.Y) = Z</code>: f(X) = Z f(Y) = Z <code>,</code> has higher priority over <code>.</code>, so <code>f(X.Y,Z) = W</code> is: f(X) = g f(Y) = g g(Z) = W If a function isn't defined and isn't an argument of any function on the execution stack, it returns a unique function that returns itself. == Execution == Program execution: * Take input. * Check is it a valid Hakerh expression. If not, replace it with <code>_(_)</code>. * Evaluate input as Hakerh expression. * Output the result. A function call <code>f(X)</code> is evaluated by the following: * Iterate through the function definitions, starting from the first. :: Current definition will be written as <code>g(Y) = Z</code>. :* If <code>g</code> isn't <code>f</code> as the function, skip. :* If X evaluates to N and Y is N, return N. :* If X or Y evaluates to N, skip. :* Replace all instances of <code>Y</code> in <code>Z</code> with <code>X</code> and return * If no definition is found, evaluate X and return unique function which returns itself. Recursion is not only allowed, but also encouraged. == Examples == === SKI Calculus === This proves it [[meta Turing-complete]]. I(x) = x K(x,y) = x S(x,y,z) = x(z,y(z)) === Basic relations === eq(x,x) = T eq(x,y) = F !(F) = T !(x) = F or(F,F) = F or(x,y) = T and(T,T) = T and(x,y) = F nor(x,y) = !(or(x,y)) nand(x,y) = !(and(x,y)) neq(x,y) = !(eq(x,y)) apply(x,y) = x(y) === Natural numbers === let 0 N(0) = T N(S(N[x])) = T P(S(N[x])) = x N(P(0)) = F eq(S(a),S(b)) = eq(a,b) alt(0) = F alt(S(alt[x]) = F alt(x) = T nat(alt[x]) = F [[Category:Languages]] [[Category:2025]] [[Category:Functional paradigm]] [[Category:Declarative paradigm]] [[Category:Unknown computational class]] [[Category:Unimplemented]]'
New page wikitext, after the edit (new_wikitext)
''''Hakerh''' is an esolang by [[User:TBPO]] that imitates [[User:Hakerh400]]'s esolangs. I made a timestamp below to mark where my transformation into Hakerh400 begun: [[User:TenBillionPlusOne|TB]][[User talk:TenBillionPlusOne|PO]] 11:32, 15 May 2025 (UTC) == Syntax == The program consists of function definitions: f(X) = Y Where uppercase letters (except T, F and N) are any expressions. T, F and N are built-in functions that return themselves. f returns a function with name f. <code>X(Y)</code> calls function X with argument Y. <code>X[Y]</code> returns Y if <code>X[Y]</code> is T and N if isn't. === Syntactic sugar === There is some syntactic sugar to simplify and shorten the code. For example, <code>let a, b</code> is equivalement to: a(x) = a b(x) = b <code>f(X,Y)</code> is equivalement to <code>f(X)(Y)</code>, and <code>f(X,Y) = Z</code> is equivalement to: f(X) = g g(Y) = Z <code>f(X.Y) = Z</code>: f(X) = Z f(Y) = Z <code>,</code> has higher priority over <code>.</code>, so <code>f(X.Y,Z) = W</code> is: f(X) = g f(Y) = g g(Z) = W If a function isn't defined and isn't an argument of any function on the execution stack, it returns a unique function that returns itself. == Execution == Program execution: * Take input. * Check is it a valid Hakerh expression. If not, replace it with <code>_(_)</code>. * Evaluate input as Hakerh expression. * Output the result. A function call <code>f(X)</code> is evaluated by the following: * Iterate through the function definitions, starting from the first. :: Current definition will be written as <code>g(Y) = Z</code>. :* If <code>g</code> isn't <code>f</code> as the function, skip. :* If X evaluates to N and Y is N, return N. :* If X or Y evaluates to N, skip. :* Replace all instances of <code>Y</code> in <code>Z</code> with <code>X</code> and return * If no definition is found, evaluate X and return unique function which returns itself. Recursion is allowed. == Intention == There are two reasons why I created this language: * To begin the transformation into [[User:Hakerh400|Hakerh400]], * To explore the simulation of sets and types by functions. Set can be simulated by a function that returns T if value is in the set and F otherwise. Set defined in such way can also simulate type, because <code>f[x]</code> in function definition causes the definition to be used only if x is in f. == Examples == === SKI Calculus === This proves it [[meta Turing-complete]]. I(x) = x K(x,y) = x S(x,y,z) = x(z,y(z)) === Basic relations === eq(x,x) = T eq(x,y) = F !(F) = T !(x) = F or(F,F) = F or(x,y) = T and(T,T) = T and(x,y) = F nor(x,y) = !(or(x,y)) nand(x,y) = !(and(x,y)) neq(x,y) = !(eq(x,y)) apply(x,y) = x(y) === Natural numbers === let 0 N(0) = T N(S(N[x])) = T P(S(N[x])) = x N(P(0)) = F eq(S(a),S(b)) = eq(a,b) alt(0) = F alt(S(alt[x]) = F alt(x) = T nat(alt[x]) = F [[Category:Languages]] [[Category:2025]] [[Category:Functional paradigm]] [[Category:Declarative paradigm]] [[Category:Unknown computational class]] [[Category:Unimplemented]]'
Unified diff of changes made by edit (edit_diff)
'@@ -52,5 +52,11 @@ * If no definition is found, evaluate X and return unique function which returns itself. -Recursion is not only allowed, but also encouraged. +Recursion is allowed. + +== Intention == + +There are two reasons why I created this language: +* To begin the transformation into [[User:Hakerh400|Hakerh400]], +* To explore the simulation of sets and types by functions. Set can be simulated by a function that returns T if value is in the set and F otherwise. Set defined in such way can also simulate type, because <code>f[x]</code> in function definition causes the definition to be used only if x is in f. == Examples == '
New page size (new_size)
3077
Old page size (old_size)
2674
Lines added in edit (added_lines)
[ 0 => 'Recursion is allowed.', 1 => '', 2 => '== Intention ==', 3 => '', 4 => 'There are two reasons why I created this language:', 5 => '* To begin the transformation into [[User:Hakerh400|Hakerh400]],', 6 => '* To explore the simulation of sets and types by functions. Set can be simulated by a function that returns T if value is in the set and F otherwise. Set defined in such way can also simulate type, because <code>f[x]</code> in function definition causes the definition to be used only if x is in f.' ]
Unix timestamp of change (timestamp)
'1747313919'