« first day (4274 days earlier)      last day (864 days later) » 

00:00
Hello, and welcome to the twenty-eigth Learn You a Language. Today's language being learned for a greater good is Fig, made by everyone's favourite JVM optimising compiler maker Seggan. Fig is an irrational byte lisp-like golflang. Fig CMCs (FCMCs) will be posted throughout the next 24 hours, and y'all are free to ask questions about the language.
12
Seggan isn't here to kick things off, but he's left a few pre-written notes for LYAL
in Fig, 2 hours ago, by Seggan
Hello people in the future, I see LYAL has started. As I am probably not here, I'll quickly explain scoring to you. You see, Fig only uses the 96 printable ASCII characters (not including tab). How is it that it is so golfy, you ask? Well, on the basis that you can theoretically make a computer architecture using any log_256(n) bytes, Fig is actually scored in irrational bytes. A Fig "byte" is just big enough to contain the 96 characters. Therefore, any Fig score is nlog_256(96).
:O seggan can travel through time
He's also left a few notes on string compression
in Fig, 1 hour ago, by Seggan
String compression works very differently from Vyxal. As you (probably) saw, compressed strings start with D and end with ". First, the string is treated as a base-94 integer (the codepage minus quote and newline). Then it is modded with 8, to get a number 0-7. If the 1st bit is set, the next thing is obtained from the dictionary. Otherwise, the next thing is a char.
in Fig, 1 hour ago, by Seggan
If the second bit is set, a space is added before the just-obtained string. If the 3rd bit is set, capitalise the first character of the obtained string. Finally, append the string to the result. If you are brave enough to read me terrible atom-based-while-looping decompression algo, it is here
For reference, the online interpreter for Fig is here, and the operator list is here
FCMC: Given a list of positive integers, double the integers at even indices and halve the integers at odd indices (0-indexed)
[5, 1, 8, 6, 3] -> [10, 0.5, 16, 3, 6]
@Steffan lol
don't use the old link
use fig.fly.dev
oh
though I'm not sure that's the problem
also it gives 0 now
it was throwing exception before generating the link
(ayo @cairdcoinheringaahing now that you're mod, could you 11 fig.fly.dev into chat.stackexchange.com/transcript/message/62179146#62179146)
00:16
ther's a bug with input handling where it doesn't work with spaces
(replace the heroku app link with the fly.dev link)
try removing spaces in the input
@lyxal 5.752 bytes: n2hx'\4
@lyxal It has been 11'ed
excellent
double 11'd even
00:18
why
why would you do this
why would you 22 my message?
how could you use ? here?
time to ping somebody to 33 it
I feel a mysterious calling summoning me here
@lyxal I see literally no difference. Excellent, well done :P
11 = 22 mod 11
00:20
@hyper-neutrino go on then, 33 my message. See if I care. :p
But there's only been 10 mods, there is no mod 11
@hyper-neutrino Can't just have one edit, gotta have 3
@GrainGhost you wanna join in on the action or nah
Now we summon WW for the 44 ;P
00:23
can someone 11 that too lol
it does not end in 8 minutes
huh why is it set to last 30 minutes
the scheduled event in chat lasts 24h
lol
LYAL in super blitz mode
alright that has been 11'd too
searches for more things to 11
@Bubbler in chess 8 minutes is rapid
:3
30minutes is classical
00:35
but lyal classical is 24hrs :P
00:51
Now it's 44'd. If only we had one more moderator we could make a crossed out 44 joke.
crossed out 44 is still regular 55 :(
FCMC: surround an input string with --- on both sides
9.054 bytes: o*/-3'+x+#x
unfortunately +*/-3+x*/-3 is same length
Hey @RadvylfPrograms did you ever find a fix for NMP/NSP?
01:03
Dang
How do I map over an inputted array in Fig?
That's what I've been trying but idk how to get to work with intputs
@tybocopperkettle it could be an issue with needing x somewhere or ensuring youre passing a function ref using '
Shouldn't this output [2, 3, 4]?
@south Tried with x and yes I'm using '
01:10
@tybocopperkettle oh, thats an issue with the input parser
using [1,2,3] without spaces fixes that
on a separate note '+1 is '} here
Good to know
01:14
@south trailing xs can always be removed (unless they're part of a string, ofc)
yea
@south oh man, forgot about j. nice
:)
jx:*3/- is the same length here, darn
Can you get a random number or random items from a list?
01:33
How would I go about getting the first n primes?
Oh mC exists
How come FmC'px doesn't work?
02:22
oh shit p exists haha
It appears to not work very well...
wdym?
@tybocopperkettle uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh idk tbh but FmC'p works
@Steffan Oops, wrong link
FmC'px does work...
02:26
Pretty sure 49 isn't prime lol
49 isn't in the list?
ok that is so weird
uh oh
02:29
in any case t#xFmC'p is first n primes
what on earth, earlier 49 wasn't in the list but now it is
this is the weirdest thing on earth
ig the online interpreter doesnt like running in succession lol, i can get t#xFmC'p to generate all primes
02:43
How do you slice a list? I can't find anything in gist
02:56
er guys what's the point of LYAL (I honestly don't know :3)
probably to incentivize people to learn new languages
idk
but if we keep learning them like every month then we lose track and forget them :P
03:21
D:
 
1 hour later…
04:28
@DialFrost Because several of us realized that we like learning new languages, and you know what's more fun than learning a new language? Learning a new language together. :D
@lyxal Huh
Oh, that's the parser error y'all were talking about.
yep unfortunately
@lyxal So then 5.762 bytes: *^2^N1T
@south Hey, I'm not gonna complain. My work-in-progress language breaks on spaces inside literals, including string literals.
lol yeah, im not complaining either
i got really confused cuz lyxal wrote 5.752 bytes, but now im seeing thats a typo :P
How do you loop in Fig?
Is there just (?
@Steffan 4.939 bytes: hn2'\4
04:40
most looping is done over collections
@DLosc this is smart
Seems to me it's also undocumented behavior--the documentation for n only gives (any, num, fun), it doesn't say you can also do (any, fun, num). I figured it was worth a try, though, and it worked.
@DialFrost I enjoyed a few LYAL languages enough to keep using them (mainly BQN and Haskell). For others, yeah, I forget a lot of the specifics, but I usually remember at least the basics of how the language works, so if I want to use it again, it's easier to re-learn.
05:02
@DLosc I take wayyy to long to learn a lang
let alone know the basics
@DLosc Kinda tru
but Fig looks weird
so I aint learning it
:P
Ok
sry steffan
its seggan's language
it isnt very weird unless you find lispy things weird
lispy things?
in The Tarpit, Sep 13 at 17:19, by DLosc
@thejonymyster TIL most Lisps are not normal langs ;)
@DLosc Though AFAICT, Fig doesn't have an "is positive" builtin, so in that way it's more "normal" than most Lisps! :P
oh well
wait LYAL is monthly right?
it's officially biweekly but /shrug
adjective
Happening every two weeks.
Happening twice a week; semiweekly.
05:20
or fortnightly if you want
@emanresuA Fig, 7.408 bytes: t@AG'B=0b
biweekly?
@JoKing every 2 weeks???
that's wayy too fast
imo
LYAL lasts for one day every two weeks; LotM lasts for a whole month
So there's a fast and a slow opportunity for language learning
hmm
tru
"biweekly" is one of my pet peeves. i don't understand why you would use an ambiguous word when "fortnightly" is right there
05:29
I prefer biweekly :3
It's clear that bi is 2, whereas forotnightly is more ambiguous
and biweekly is shorter by 3 bytes!
but is it every two weeks or twice a week?
Both according to Google
at least americans know what fortnite is now
@JoKing eh?
oh lmaoooo
I'm american btw :3
did you know what a fortnight was 5 years ago?
presuming you had been born at that point
05:32
@JoKing ...
dont knock all americans down, i was a well versed kid in middle school
I'm half american sorta, oh well
@JoKing I learned the word "fortnight" from reading Tolkien, IIRC
I can't rmb where I learned fortnight :(
@thejonymyster Fig, 3.292 bytes: OM@[
05:38
@DLosc Fig cheating hehe
it uses log to count the bytes right
\$x\log_{256}(96)\$
ig that doesnt work here but yes, log₂₅₆(96)
Ah, yes. I do find the irrational byte-count concept a bit off-putting, but that's how everyone else is counting it, so for the purposes of comparing figs to figs (heh) I'm doing the same.
i feel like irrational byte counts fundamentally miss the point of what a byte (or rather, what a bit) actually is
05:42
ye
honestly, i would have preferred just allowing "tokens" as a way to score languages, rather than this half-baked conversion to bytes
tokens?
sounds weirder
are there any other languages that use irrational bytecounts?
@DialFrost more or less weird than 0.336 bits
What's your opinion on fractional byte counts, like nibbles?
that's fine, because it's still a whole number of bits
05:54
fractional byte langs like nibbles make more sense than Fig tbh
to be clear, i'm not suggesting disallowing Fig and other alternate bit languages
there just needs to be a better way of representing the score
maybe rounding up to the nearest bit rather than byte? that way it actually makes some sense as something that can actually be represented as information
@JoKing The argument was "What about languages built for trit-based computers?" Which sounds like it probably exists, but I don't know.
x trytes?
(would a tryte be 8, 9, or 27 trits?)
9 makes the most sense I think
8 would be inconvenient with tritwise operators and shifts, while 27 is way to big to be practical
06:02
6 makes sense too
It gives you 729 possible tryte values which is already a lot
I guess if we're willing to entertain counting tokens or trytes or whatever, that calls into question the whole "Answers are scored in bytes" paradigm. Which, in theory, is fine because of the whole "Different languages don't compete with each other" philosophy.
I'm conflicted, personally. On the one hand, I do like the consistency of "score is measured in bytes." On the other hand, some languages have traditionally been scored in something other than bytes (e.g. Piet being scored in codels), and that does seem to make more sense than forcing every language to define an encoding in terms of bytes.
@DLosc agreed
06:33
There's probably something wrong with this, but if your lang has N symbols, what about converting your code from bijective base N to binary and counting bits?
i feel like that would be pretty close to some kind of logarithmic bit rounding but seems like it could be a very good way to rationalize exactly how
And unlike bytes you can't have fractional bits
If you figure out a way you've violated the laws of... thermodynamics?
07:34
btw what happened to martin ender?
07:50
72
Q: Farewell, for now

Martin EnderWith my dwindling activity over the last few months, this probably doesn't come as a surprise... but I've decided to hand in my diamond. My reasons are similar to Alex's, half a year ago, in that there are various things (none bad, thankfully) these days that take up my time otherwise, and recent...

08:10
Spent 5 minutes thinking about who the hell that Grain Ghost moderator was…
@Fatalize Lmao
@Adám Oh dear... :((
09:03
@Fatalize Same, until I realised that there's only 1 person with 90k rep and makes insanely good questions
Is it alright if I edit old posts to include TIO links?
Or issit not needed
@emanresuA You can though? That's literally how fig works
09:21
Explain to me how you can have a piece of information smaller than a bit, a boolean, 1 or 0
You can't have less than 1 bit but you can have 1.1 bits or whatever
Or I guess the next number would be 1.58496250072 bits which equals one trit
09:52
0
A: Sandbox for Proposed Challenges

AZTECCORemove digits or increment code-golf Given a number n tell how many step to reach 0 by removing every occurrence of the length of that number from it or, in case no changes happened, increment it by one. Example n = 2510105225 Step 1: 10 digits remove 10's 25xxXX5225 -> 255225 Step 2: 255225 ha...

10:46
erm guys, I'm tryna learn Hexagony
but I don't understand how the code interprets it :(
the code will be formatted as a hexagon, padded with no-ops
the code pointer proceeds as if it is on a plane tiled with these code hexagons, with corners having special logic as to which edge they wrap to
@DialFrost you can view an example interactively at hexagony.net, it even has little wires showing connections
hmm thx!
11:05
@DialFrost I got it because of Grain -> wheat
@Fatalize Nice! :3
@JoKing dont understand still but I'll try looking :P
do you have experience with other 2D languages?
@JoKing ?
2d?
like ><> or Befunge?
greetgins!
11:11
typically these languages have a 2D field of commands that is navigated by a code pointer, where each character is a command that can affect either the pointer, a data structure or the code field itself
sometimes, like in makina, there are multiple pointers
@JoKing nope
What's befunge? :P
you don't want to know
2
I'm so inexperienced at 2d I honestly dont know what it is
those would be a lot easier to start with than hexagony since they just use rectangles and a simpler data model (stack)
11:15
@DialFrost it's very simple, if the programs look like this:
v   L>C
v>n0; >n0;
>wv ^
>Ov ^
^i>?g
^IvOC
^ nv
;1<>ppuv
^<<<OOO<
^   >vv
;0nCUv>n1;
   T<<
;1nC
then it's probably a 2d lang
lmao
@JoKing oh ok then nevermind :P
2D languages seem great to explain and post
but is the learning like painful?
(that's a makina answer to this question btw)
@DialFrost the learning, at least for makina, isn't all that hard once you get the concepts. the writing of programs, however...
@DialFrost not especially, they are typically pretty intuitive (most people have a good sense of how a pointer might travel 2d space)
let's just say that makina is the hardest language I have ever used
of course, every lang has a gimmick
i think ><> is the "purest" version of a 2d lang, which i'd recommend for beginners
11:19
^
hmm
Maybe, after I get the hang of vyxal
@DialFrost making a blog post on 2d langs is somewhere on my looong todo list
:3 Thanks for the recommendation!
if you want something harder you could try makina, but I think I've advertised it enough :p
i haven't tried makina yet, is there an online interpreter?
11:22
> The pymakina interpreter can be installed from pypi wherever package installers are sold. You can then simply use the makina command in a terminal.
@JoKing Do you have the resources for it?
I wanna learn it soon
Just asking, I have seen like only 1 post with that lang, is it useful at all?
And it was a post that was like 5 years old
@DialFrost TIO, esolang wiki
Huh, we haven't done ><> for LOTM?
i guess it's "one of our most commonly used languages" lol
@JoKing I'd actually recommend befunge for starters
i find the stack commands a bit cumbersome + the directional conditionals are a bit annoying
plus, there's several different versions (and dozens of implementations) that might be confusing
hmm true
11:30
i love my mirrors too
But why is befunge rarely used?
because it’s stupid
> 1,220 answers for befunge
for some reason i can't do the same search for ><>
@Fatalize hmm lol
Wait guys how do you strikethrough in chat
11:38
@JoKing Just search for "fish", I'm sure that'd work :P
@DialFrost ---strikethrough--- strikethrough
I learnt vyxal cuz emanresu A pressured me and it seemed fun, but idt its the same for befunge
huh caird won, congrats!
@PyGamer0 You just noticed :P
i just came from school
what time is it for you now?
11:40
and i am doing online class now
i have a scientific reason, as to why i voted for the person i voted
11:53
@cairdcoinheringaahing i think you should update your about me :P
CMQ: Favorite web framework?
@mathcat Elm.
Simple, easy to use and fast as all hell.

« first day (4274 days earlier)      last day (864 days later) »