Add mirror | and invert - operators with stacking (i#)#7
Open
jawhitti wants to merge 1 commit into
Open
Conversation
Introduce two new unary operators: - | (horizontal mirror / staple): bit-reversal within variable width - - (vertical mirror / worm): ones' complement (bit inversion) These are perpendicular mirrors — | reflects left-right, - reflects top-bottom. They commute, and |-|- is identity, which means # has always been |-|-. All six unary operators (& V v ? | -) can now be stacked in any order, evaluated right-to-left (e.g., '&-|?.1'). Parser refactored from single unary op to list-based stacking across all three expression contexts. Enables future syslib division (| for MSB-first iteration, - for complement in subtraction) — completing INTERCAL's four basic arithmetic ops. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
|(staple/horizontal mirror — bit reversal) and-(worm/vertical mirror — ones' complement)'&-|?.1')Why
-(invert) gives INTERCAL a primitive it never had — ones' complement — simplifying the syslib subtract routine from ~40 lines to 3|(mirror) enables MSB-first bit iteration, which unblocks integer division in the syslib|-|-is identity, which means#has always been two staples and two worms. The mesh symbol knew all along.Test plan
#|1and#-1#-|5🤖 Generated with Claude Code