As a commenter points out, that’d make programming a difficult pastime. Can’t think of a non-esolang without if and for apart from Brainfuck, and that’s got an f in the name.
I think I could write an arbitrarily complex program without major issue.
21–30 of 63 posts
As a commenter points out, that’d make programming a difficult pastime. Can’t think of a non-esolang without if and for apart from Brainfuck, and that’s got an f in the name.
I think I could write an arbitrarily complex program without major issue.
As a commenter points out, that’d make programming a difficult pastime. Can’t think of a non-esolang without if and for apart from Brainfuck, and that’s got an f in the name.
“Mapping from source file (other than a UTF-8 source file)(since C++23) characters to the basic character set(until C++23)translation character set(since C++23) during translation phase 1 is implementation-defined, so an implementation is required to document how the basic source characters are represented in source files.”*
⇒ pre C++23, you could have a C++ compiler that used an Unicode “Pile of poo” (https://www.unicode.org/L2/L2017/17407-frowning-poo.pdf) instead of the letter F.
As a commenter points out, that’d make programming a difficult pastime. Can’t think of a non-esolang without if and for apart from Brainfuck, and that’s got an f in the name.
I guess you can (at least in C ) use && where you would use “if” and a convoluted while where you could write a “for”.
ihatetheletterf.h:
#define cond if
#define loop for
#define otherwise default
#define untrue false
#define real float
And when you work in a (large) team, they won't likely accept weird constructions just to avoid a letter anyway.I wonder how easy it would be to avoid that letter when programming. It would certainly be easier in Perl, since you can use unless conditionals and while loops, and subroutines are simply called sub. In the case you absolutely need a module using the dreaded letter, require can be used instead of use so that letter can simply be escaped. The same applies to method calls, just call indirectly. The idea reminds me abo…
As a commenter points out, that’d make programming a difficult pastime. Can’t think of a non-esolang without if and for apart from Brainfuck, and that’s got an f in the name.
As a commenter points out, that’d make programming a difficult pastime. Can’t think of a non-esolang without if and for apart from Brainfuck, and that’s got an f in the name.
We'd make a small preamble to define new names for things like DEFUN, Lisp's operator to define new functions. No F's needed to do that either. We can do this by taking advantage of read-time evaluation.
First we get references to the symbols DEFMACRO and DEFUN.
(eval-when (:compile-toplevel :load-toplevel :execute)
(setq de*un (intern (map 'string 'code-char '(68 69 70 85 78))))
(setq de*macro (intern (map 'string 'code-char '(68 69 70 77 65 67 82 79)))))
This technique can be used to access any symbol in Common Lisp that may have an F in it.Now, to make life-without-F easy, we define new names for DEFMACRO (mac) and DEFUN (proc) without actually lexically referring to the F-infected symbols:
(#.de*macro mac (&body r) `(,de*macro ,@r))
(mac proc (&body r) `(,de*un ,@r))
Now we can define functions with PROC instead of DEFUN. Here's the Fibonacci function, with the F censored out. Note that we don't need IF since Lisp has the superior COND: (proc *ib (n)
(cond
((= 0 n) 0)
((= 1 n) 1)
(t (+ (*ib (- n 1)) (*ib (- n 2))))))
Test it: > (print (*ib 10))
55Earlier quoted context omitted.
I guess you can (at least in C ) use && where you would use “if” and a convoluted while where you could write a “for”.
When you're dedicated and don't have to work in a large team: ihatetheletterf.h: #define cond if #define loop for #define otherwise default #define untrue false #define real float And when you work in a (large) team, they won't likely accept weird constructions just to avoid a letter anyway.
As a commenter points out, that’d make programming a difficult pastime. Can’t think of a non-esolang without if and for apart from Brainfuck, and that’s got an f in the name.
The if/elseif keywords are off the table, but you still have both explicit looping constructs and function declarations:
while x ... end
each x y z in w ... end
on name x y do ... end
There are five primitive operators with "F": typeof (rarely needed), floor (inconvenient to work around but at least you still have % for modulo), first (can be replaced with indexing), flip (transpose a matrix/table; this could be replaced (slowly) with a user-defined function), fuse (join a list of strings into a single string; very difficult to do without, since Lil doesn't have a vanilla string-concat operator), format (string formatting; this removes tons of functionality and the easiest ways of working around not having fuse).Most of the query forms (select, extract, and update expressions) would be OK, but they all need a "from" clause to specify the source table, so no dice.
What you're left with is still very much Turing-Complete, but much less ergonomic.
As a commenter points out, that’d make programming a difficult pastime. Can’t think of a non-esolang without if and for apart from Brainfuck, and that’s got an f in the name.
I guess you can (at least in C ) use && where you would use “if” and a convoluted while where you could write a “for”.
What's convoluted about it? A `for` is about as simple as syntactic sugar gets.
for( a; b; c ) {
}
is exactly equivalent to a;
while( b ) {
c;
}
(OK, a variable declared in `a` will remain in scope after the while loop terminates, but the only way for this to have an effect on anything is if you intentionally refer to it afterwards, in which case you needed to predeclare it for the for loop too.)