H - Q -

H - Q - is a golfing language based on 05AB1E, GolfScript and HQ9+.
Feel free to add any instructions you want, but please follow these rules:
* Add your username (unless the instruction is added by me)
* Please don't add any implementation-defined/UB instructions.
* Please stick to the format.
== Datatypes ==
 Type How to push Notes
 
 Number 123.45 Numbers are 64-bit floating-point values. 
 456_ (negative values)
 
 String "Hello, World!" Escape codes are ¶ (newline), → (tab), · (vertical tab), ← (backspace) and \xxxx (2/4/6 character unicode escape). 
 'Hello, World!' Use \ to escape these characters (including quotes and the \ itself)
 ′f (one char string)
Numbers and strings are equal types, which means one will be converted into the other if the data is in the wrong type.
== Commands ==
 Literals
 H - Push "Hello World" on stack (by User:LEOMOK)
 Q - Push "Q" (I'm sorry)
 N - Push lyrics of "99 bottles of beer"
 Í - Infinity (=1/0)
 Ñ - NaN (=0/0)
 P - Pi
 E - Euler's Number
 Operators
 + - Pop a, b, push b plus a.
 , - Pop a, b, push b concatenated to a.
 - - Pop a, b, push b minus a.
 * - Pop a, b, push b times a.
 × - Pop a, b, push b repeated a times.
 / - Pop a, b, push b divided by a (float division).
 ÷ - Pop a, b, push b integer divided by a.
 % - Pop a, b, push b remainder a.
 : - Pop a, b, push b to the power of a.
 √ - Pop a, push square root of a.
 ; - Pop a, b, push log base b of a.
 i - Same as 1+.
 d - Same as 1-.
 _ - Negate top of stack.
 a - Pop a, push absolute value of a.
 f - Pop a, push floor of a.
 c - Pop a, push ceiling of a.
 p - Pop a, push -1 if a is prime, else 0.
 \ - Pop a, b, push character at position a of b.
 l - Pop a, push length of a.
 j - Pop a, b, push integer indicating first instance of a in b.
 s - Pop a, b, c, push all characters between positions a and b of c.
 v - Pop a, b, c, push c with all b's replaced by a.
 [ - Pop a, push Unicode of a.
 ] - Pop a, push Unicode character with value a.
 { - Pop a, b, push string representation of a in base b.
 } - Pop a, b, parse a in base b, then push the result.
 ( - Same as 10{.
 ) - Same as 10}.
 = - Pop a, b, push -1 if b equals a, else 0 (NaN is equal to NaN).
 < - Same as =, but greater than.
 > - Same as =, but less than.
 & - Pop a, b, push bitwise and of a and b.
 | - Same as &, but bitwise or.
 ^ - Same as &, but bitwise xor.
 ~ - Pop a, push bitwise not of a.
 Σ - Sum up the whole stack.
 Π - Multiply up the whole stack.
 R - Pop a, b, push random integer between a and b (both included)
 ¿ - Push random floating point number between 0 and 1.
 r - Pop a, b, push integers from a to b onto stack.
 Stack manipulation
 D - Duplicate top value of stack.
 Đ - Pop a, b, push a b times.
 V - Pop.
 S - Swap.
 Š - Pop a, reverse the top a items.
 W - Pop a, dup the a stack item.
 Ŵ - Pop a, swap the a and top stack items
 Ř - Reverse the stack.
 ↑ - Move bottom value up.
 ↓ - Move top value down.
 ` - Do the next instruction without popping the stack 
 Control Flow
 $ - Pop string, then run as code.
 J - If statement. Pop a, b, if a is true (not zero, empty or NaN), run b.
 ? - If Else statement. Pop a, b, c, if a is true, run b, else run c.
 F - For loop, pop a and b, run b for (C=0, C<a+1, C++)
 W - While loop, pop b, run b until top of stack is false.
 T - Try catch. Pop a, b, if an error occurs while running a, run b instead.
 @ - Reduce. Pop a, run it until it can't be done anymore.
 Ï - Infinite loop. Pop a, run a forever.
 Č - Pop a, eval as JavaScript code, and push the stringified result.
 ß - Break out of loop (end program if not in loop)
 Þ - Loop continue.
 C - Loop counter.
 Input and output
 O - Print top of stack with a newline.
 Ø - Print top of stack without a newline.
 I - Push the next line of input.
 Ĭ - Pop a, open file named a
 Ö - Pop a, b, write b to last opened file and close it
 Implicit input: The first line of input is pushed to the stack.
 Implicit output: if nothing is printed when the program ends, print the pop of the stack.
 Variables
 ← - Pop a, b, set variable named b to a.
 → - Pop a, push value of variable named a. All variables are set to empty string on default.
 Bonus
 Ṝ - Push the lyrics of https://www.youtube.com/watch?v=dQw4w9WgXcQ.
Version 2 adds a standard library (Å) and these commands:
 Œ - Pop from the stack and push to the clipboard.
 œ - Pop from the clipboard and push to the stack.
 « - Pop a, b, push a left shifted by b.
 » - Pop a, b, push a right shifted by b
 ÅE - Pop a, write a to stderr.
 ÅN - Apply JS isNaN to top stack value. Equivalent to )Ñ=
 Åe - Push Number.EPSILON.
 ÅM - Push Number.MAX_SAFE_INTEGER.
 Åm - Push Number.MAX_VALUE.
== Examples ==
 "C'\"FizzBuzz!\"OÞ'15%~J
 '\"Fizz!\"OÞ'D3%~J
 '\"Buzz!\"OÞ'D5%~J
 `O"F
(Fizzbuzz until input value)
 "VD2%
 '2/O'
 '3*i`O' 
 ?
 1`=′ßJ
 "Ï
(Collatz sequence starting from input value)
 1 0"`O`+"IF
(Fibonacci sequence until input value)
 1r1Π
(Factorial of input value)
 Q
(Quine)
 1
(Another quine)
 694201337
(A third quine)
 Ṝ 
(Whatever you do, DON'T RUN THIS)
Category:Languages Category:Stack-based Category:Golfing language Category:Unimplemented