We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

Solution 1/Extracted

From Esolang
Jump to navigation Jump to search

This is a variation of Solution 1 which doesn't strictly follow the constraints of Bitch, Ienai!. For simplicity, identical sections are omitted. It is suggested you read the main version of Solution 1 before reading this.

Program structure

A program consists of any number of expressions, with the normal form of the final one implicitly being printed with ! (see below) upon completion.

Special forms

Special forms are predefined expressions that do special things. They can be redefined arbitrarily, as if they had been defined from within the program.

Special procedures

  • (= name x) makes the string of characters 'name' equivalent to x.
  • Otherwise, this has the same special procedures.

Note that special procedures are treated as lambdas with empty bodies. This means special procedures can be passed through each other, and can have their bodies changed with >. This will not affect the side-effects special procedures have.

Special names

  • U is a special name for the universal parameter.

Miscellaneous

  • Λ is special syntax for the identity parameter(s).

Example programs

Implementing a standard Solution 1 environment:

(= P (λ →)) ~ your program here

(= i (λ (λ →) → (λ →)))
(= M (λ (λ →) → Λ1))
(= l (λ (λ →) (λ → Λ1) → (λ →)))
(= N (λ (λ →) (λ → Λ1) → l (λ →)))

(= error (- U U)) ~ for making certain expressions invalid
~ todo: make passing special procedures through each other an error
(= = error)

(> U P)
(U i i i i i i i i i i) ~ add as many i's as you need :P