« first day (4407 days earlier)      last day (453 days later) » 

6:00 PM
@Ginger That's what I'm saying! :p
 
@Ginger Many languages don't even need the pacakges to be in a specific folder but can read them directly from a central cache folder
 
@m90 ooh, so your formula returns all values for consecutive a, c
nice
 
well, the module group system works well with bundles because bundles are basically zipped module groups
but you have a good point abt storage and bandwidth
 
I still don't get how module groups work when there's libraries which are themselves module groups
 
@RydwolfPrograms if I do your symlink idea this would become unnecessary tho
because there'd only be one copy
 
6:02 PM
Like, are all of the module groups in one top level? Or do you have them inside the module group, like modules?
Where you'd have a nested structure?
 
@mathcat I'm dumb lol that's clever
 
Which seems like it'd defeat a lot of the point
 
there is no nested structure here
 
@mathcat lol ya i agree its pretty smart lmao
 
So what happens if my project, goat_recognizer, is a module group which depends on image_recognizer, a library which is a module group
 
6:04 PM
could you be more specific? lots of things happen all the time d:
 
The bundle would have to include both module groups, so a bundle can't be the same as a module group
 
oh, that would be two bundles when packaged: goat_recognizer and image_recognizer
you'd have to come up with some other way of distributing them together, like the "application bundles" idea I had earlier
 
So the end user would install goat_recognizer as an application bundle, and image_recognizer would be (the interpreted equivalent of) a dynamically linked library?
 
yup
 
Okay, that makes sense
 
6:05 PM
:D
 
That removes the issue of duplicate libraries for the end user too
Since presumably image_recognizer.bun would be stored in some central place where both goat_recognizer.abun and sheep_recognizer.abun could depend on the same file
 
6 mins ago, by Rydwolf Programs
@Ginger That's what I'm saying! :p
@RydwolfPrograms yes, exactly!
 
Okay, this is sensible
 
and if goat_recognizer and sheep_recognizer both depend on fancy_terminal, since that's not a big library each bundle would have its own copy (or if I did the cache-based solution the single download would be symlinked in during the install)
 
Well that wouldn't be for the end user right
 
m90
6:08 PM
@Simd It can actually be done using bisect in version 3.10 or greater (for the key parameter), with some tricks: ato.pxeger.com/…
 
The end user would just have the bundle files
 
correct, the installer handles everything else
 
IMO it still would make more sense to treat every dependency like a module tho
And then there'd be a way to declare which dependencies should be dynamic
 
eh, this method works fine, and if I do the cache-based system it also fixes the duplicate issue (although I don't really like that solution)
wait, wdym?
to the code, everything is a module
 
No but like, I just still don't think module groups add much
 
6:11 PM
I think they do :p
 
They're basically just dependencies that are always statically linked
 
correct (I think)
 
Why can't all modules/module-groups just be modules, and ones that would typically be the small dependencies in module groups would just be declared/imported/configured as static by the application
 
I don't get it, could you explain in terms of goat_recognizer? :b
 
One program's tiny dependency is another's huge dependency. What if I'm super restricted resource-wise and have fifty programs that all depend on a bigint module?
I have no choice but to have fifty copies of that bigint module as the end user
 
6:14 PM
@RydwolfPrograms image_recognizer.bun??
 
I mean it's not much of a drawback, but I just still don't see what module groups add
It seems like removing them would have purely upsides
@DLosc Indeed :p
 
@DLosc call the language Rabbit
@RydwolfPrograms alright, so if I didn't have module groups what would goat_recognizer look like?
 
Okay so goat_recognizer uses image_recognizer and fancy_terminal, and image_recognizer uses neural_network and bigint, which are both small dependencies which would be modules in your module-module-group dichotomy
All of those would just be modules
goat_recognizer would mark image_recognizer as dynamic
 
I don't get it
 
So image_recognizer would be bundled as its own thing, with neural_network and bigint statically linked, and goat_recognizer would have fancy_terminal statically linked and rely on image_recognizer as an external bundle
Basically instead of the library creator deciding it's either a module or a module group, they just write a module, which may or may not depend on other modules
Then the user of that library can decide to statically or dynamically link it
 
6:23 PM
and "statically linked" modules are included in bundles?
 
Yeah
This also gives you flexibility regarding libraries which themselves have dynamic dependencies. You could pass that decision on to the user of the library. E.g., if image_recognizer decides that neural_network is big enough to be worth dynamically linking in some situations, goat_recognizer would get the final say on whether or not neural_network gets statically linked into image_recognizer's bundle
 
well, if goat_recognizer and sheep_recognizer depend on different versions of fancy_terminal, how does the interpreter know which one to import?
 
Wdym? They're two totally different projects
They'd have their own copies of fancy_terminal, and/or two different versions would be stored in the global cache
Depending on how you did it dev-side
 
and how is that different from the module group system? my favorite feature of it was that all you had to do was give the interpreter a path to a module group and it would only use the modules in that group while running, thereby avoiding dependency issues
 
Every module would just list its dependencies, like any other programming language
 
6:27 PM
I feel like I'm not understanding something
 
@Ginger Is the last "it" referring to the module group or the thing importing it
 
the modules in a group can only access 1. other modules in their group or 2. the public interfaces of other groups
which, now that I say it, seems redundant
 
@Ginger It would still be the case that modules can only access modules the module creator intended them to access
 
huh?
 
If a module says it depends on thing_doer version 2.1, and you have thing_doer version 1.8 for something else, it's not like the module would suddenly be given thing_doer 1.8 and error out
You don't need to restrict what modules can access because you know what they access
 
6:32 PM
ohhhhhhh
I think I get it
yeah that makes sense
but now I'm not really sure this system is all that different from what already exists...
 
It doesn't need to be. Don't make shotgun changes, zoom in on what's not working and snipe it.
 
I guess modules would have to include a metadata file along with their source, but that's not too big of an issue
 
I don't see why having a version in the source code is a bad thing
That should 100% be how it works IMO
 
@RydwolfPrograms it's hard to kill Godzilla with a sniper rifle
 
The version is just as critical as what the library is
import image_recognizer{2.2.*} or something
 
6:35 PM
@Ginger Don't change things for the purpose of changing things, change them if there is a concrete problem with the existing system that you have a solution for
I've often tried to re-invent stuff only to come up with the exact same thing it was before again
 
Although doing that is a valuable experience
Best way to understand how something works and why it's done that way is to reinvent it yourself
 
@mousetail yeah, that's why I'm not trying to do this with python: I don't want to reinvent the wheel :p
geddit???
 
ba-dum-tsh
 
Fantastic
 
Ooh...does an interpreted language that produces executables which dynamically link a library that is the interpreter, and just store the source code as a string in the actual executable?
 
6:38 PM
I fear though that all modern package managers are converging towards basically the same thing though
 
@RydwolfPrograms huh???
 
Like, the actual executable just being #include<python-interpreter.so>; fn main() { python_interpret("print(\"Hello, World!\")") }
 
@Ginger lmao
 
I think that's what PyInstaller does
 
yep
 
6:40 PM
and it's also something I'm going to add to this language, if I ever make it, which I'm sure I won't
 
rol?
 
for this to work with rol you'd have to redo the import system
if you're willing to do that more power to you :b
 
ive already redone that twice :P
what would i need to do
 
lemme think
 
also completly unrelated side note: ive been messing with css and divs and whatnot for 1.5 hours already and still cant make a nice canvas size + alignment
 
6:42 PM
Okay so y'all know how I was making another cursed language like rSNBATWPL
I...I actually like what I made
 
ಠ_ಠ
 
@Seggan relatable
 
I'm going to decurse it and release it as a genuine proof-of-concept praclang
 
hmm
snek pek?
 
wait, are we talking about the đź–¤ lang?
I sure hope we aren't
 
6:44 PM
The one where I posted an incredibly vertical screenshot of the docs
 
oh, so not the đź–¤ lang
 
@mathcat this plz
 
@Seggan I've always set the width and height of canvas with JS because CSS just streches and doesn't effect the size of each pixel
 
Well the main gimmick of the type system was that it wasn't algebraic...it had calculus
You could take the derivative of a type, which would apply the sum/product/chain rules to sum/product types
There were also integrals which reversed that
 
@mousetail yeah that is not working either lol
 
6:45 PM
@RydwolfPrograms :o
 
It was incredibly pointless and dumb as a gimmick but the idea of it was absolutely hilarious to me
It also had no compile or runtime errors; this was advertised as it being "incredibly robust"
 
actually what if i set the size using js and alignment using css
@RydwolfPrograms huh
calculus typing?
 
Even more cursed idea: This could be used to teach calculus to programming fanatics.
 
@RydwolfPrograms make a language that always crashes and call it "deterministic and reliable"
 
@Seggan Yep. Like ddx (i64, bool), the derivative of the product type of i64 and bool, would be a sum type containing ((), bool) and (i64, ())
 
6:46 PM
@Seggan Wrap it in a div with overflow set. Style the div normally. Then use JS to make the size of the canvas match the div
 
@Ginger Isn't that basically JS?
 
lmao
 
JS never crashes
 
right, it fails silently
 
Exactly, C is the language of segfaults
 
6:48 PM
But yeah, aside from the calculus silliness, I really like what I have so far
 
I don't think I've ever seen JS crash
 
V8 is pretty robust, given it's used in browsers
 
@mousetail as in like overflow: hidden?
 
@Seggan how does Rol do imports currently?
 
Infinite loops still hang the browser though, so it's vulnerable to denial of service
 
6:50 PM
@Ginger mix of python and java
 
@Seggan Yea, that will prevent the size of the canvas from effecting the div
 
python style imports, java style packages
 
@Seggan Wdym by "size + alignment"
 
size of the canvas + position in page
@mousetail ah
 
@Seggan I'd love to write the code myself, but I don't know Kotlin :/
 
6:51 PM
@Ginger I just realized which one you mean...lmao that as a praclang would really be something
 
@Ginger ull pick it up in an hour or so
 
@RydwolfPrograms speaking of: docs (even in a limited form) when
 
Maybe soon. Still debating whether I should write in in the style of the source material
 
DO IT
YES
 
Okay :p
 
6:53 PM
^^
 
@mousetail oh ty that worked
why didnt i ask sooner :P
 
@Seggan Now make it scale properly when you resize the window. That's the hard part
 
ouch yeah been running into that
 
Plenty of major sites get that part wrong
 
kotlin is weird
 
6:57 PM
You figured that out fast
 
wtf are "infix functions"
that's weird
 
I'd assume they're functions that parse as infix operators
 
they are
well, Kotlin looks like Java with some bonus features
not too bad
 
And less annoyances
 
*fewer
 
7:01 PM
@mousetail Not really...they hang one tab, only if developer tools are open, and double-clicking the close tab button closes it. And if dev tools aren't open, the tab stops running and prompts you to either close it or keep running
The only thing it DoSes is the exact same page that ran the infinite loop
 
@Seggan ok, so how do imports work right now?
like exactly how
 
@RydwolfPrograms Well yes but my computer is shit and makes everything run very sluggishy, making it very hard to actually press the close button
 
CMQ: I think it's widely agreed that Rust's syntax is cluttered and kinda ugly. What makes it so?
?
 
yeah that's just a non-factor lmao
 
oh wait, I misunderstood
nvm that
 
7:08 PM
A struct with impls is in pretty much every way identical to a class anyway lol
 
typeclasses have every syntactic function that oop would have
^
 
except for inheritance
 
(by typeclasses i mean traits)
 
@Ginger That's what traits are for
I think you're just traumatized by whatever flaming hot garbage that GObject thing was
That's not how Rust is supposed to be done AT ALL
 
I am, that was disgusting
 
7:15 PM
@RydwolfPrograms Can I have a representative sample to look at?
 
anyhow yeah i feel like some of rust's clutter is from using the generics syntax, not in and of itself so much as in conjunction with the kind of stuff you end up having to write in a rust type
though there's also good old turbofish
also some of the normal c-ish syntax itself can feel a bit awkward when other parts of the language feel more functional
 
@RydwolfPrograms turbofish
&
Closures being separate types that implement Fn, FnOnce, etc
Having to wrap stuff (to send a Vec to an async function that needs a Read you need to send something like a Mutex holding a thing holding a Cursor holding a Vec)
Having to call iter() before you can do map, filter, etc
Having to convert between &[u8], str, String, Vec<u8> (less of an issue, but there was this one library that was very inconsistent with them)
Types can get nested extremely deep
 
7:37 PM
Totally didn't read this as "assassinating"
 
@user oh yeah i totally forgot about that shit lmao
 
Possibly controversial opinion but I really like Python's list comprehensions as an alternative to map/filter
 
yeah they're good
 
:+1:
 
in terms of specifically python's syntax for them i think the basic map case could afford to be less verbose but filtering with if is way better than just dropping conditions in there
 
7:49 PM
[... for x in list] is still pretty compact
Can't think of many good ways you could shorten that
 
[... | x <- list] :P
 
Altho I guess it does have same issue as prefix await, that being that it's not as visibly clear the order things are being done in
 
I don't like the order of python's shorthand-if statements either.
 
The ternary ones?
Yeah no Python ternary sucks
I'll forever love x ? y : z despite the ambiguity in most langs
 
._.
 
7:55 PM
Altho actually...*is* it ambiguous?
If ?'s postfix unary
Wait yeah
If parentheses come after it, and x is a lambda
Altho in a statically typed lang you could require than x is a bool
 
@Seggan after reviewing Lua's import system it's probably possible for me to make this work with only minor changes to Rol
> This function is not supported by Standard C. As such, it is only available on some platforms (Windows, Linux, Mac OS X, Solaris, BSD, plus other Unix systems that support the dlfcn standard).
I'm not sure how the authors of the Lua reference define "some" :p
@Seggan If you can get Rol to add a bit of Lua code to the beginning of all files it generates I can make this work
all I have to do is add a custom package searcher
oh also, for imports can you make something like import foobar @ 1.0 turn into require("foobar@1.0")?
yeah this entire thing can be done in Lua pretty much
 
8:18 PM
@RydwolfPrograms I think eeryone likes them, but the problem is that it's not general enough. You can make lists, tuples, dicts, and sets but not custom collections
Haskell's do and Scala's for...yield is more general
@Ginger Maybe there's a secret underground society of people all using their own OSes that don't have support for that function?
 
8:31 PM
@user You can use a comprehension to make a generator, which you can then pass to a custom collection's constructor (unless I'm misunderstanding what you mean)
 
True, but that requires knowing the collection's type
If you have a function that could take a list, a tuple, or any custom collection, including ones not defined in your library, then you can't map and return the same type, you'd have to return a generator and the person calling your function would have to turn it into the appropriate type
 
@user How would that work
What kinda language lets you iterate over tuples
 
Python :P
 
Ew lol
Makes some sense I guess since it's dynamic
 
Yeah, other languages use the word "tuple" to describe a hetero collection, but dynamic languages already have lists for that. Tuples are just immutable
(afaict)
 
8:42 PM
IMO even in dynamic langs hetero lists are nasty
Aside from maybe strings/objects or null with other stuff
Actually I change my mind I use them pretty often
I will revise my opinion to "using lists as hetero tuples is nasty"
 
@RydwolfPrograms TS tuples are basically just arrays
 
Which I still do all the time in JS but not by choice
 
@Ginger files have a package declaration in them. importing a package imports all files found with that package
@RydwolfPrograms no parens around conditions, pattern matching syntax could be improved
 
> no parens around conditions
YES
 
I like both of those myself, although it's annoying to have to use Enum::Variant rather than Variant
 
8:46 PM
@RydwolfPrograms as in you want them or hate them?
 
Rydwolf hates no parens
 
I think I've argued pretty extensively with people here over that before, but I love parens around conditions
 
What do you dislike about pattern matching?
 
@user In some situations I agree Enum::Variant is better, but yeah in match statements over enums it should def be allowed
 
@user the syntax a bit
 
8:47 PM
@RydwolfPrograms (It's technically ambiguous which is why it's not allowed)
 
@RydwolfPrograms Yeah I meant specifically pattern matching, since Seggan mentioned it
@Seggan Right but what about the syntax?
 
@RydwolfPrograms yeah imo when ure reading code parens make the cond stand out, while without parens you see a brace and have to scan back to see the cond
@user if let syntax is a bit wonky, => instead of -> feels cluttered
@Ginger no. thats just makes a weird facade over luas import system
@Ginger ok
as long as it doesnt break without the manager
 
9:18 PM
hmmm
@Seggan I lied: this will require some changes to Rol itself q:
lemme think about it for a while
 
9:43 PM
also, there is a lua file that all rol programs load (has intrinsic functions and stuff) so as long as the package manager doesnt care that its only loaded once per run i can stick the lua code in there
 
bluuuuuh I can't think right now
 
9:57 PM
@m90 that is very seriously cool. So it doesn’t need linear each time it accesses a value of range?
 
10:14 PM
@Seggan Why aren't you using Lua 5.3 which supports bitwise operations?
I guess if you're trying to be platform agnostic it makes sense
 
Is LYAL still a thing? hgl is getting to the point where it could be usable by people other than me, and I'd like to try and find some people who would be interested in learning it.
 
@WheatWizard I don't think so
 
10:29 PM
@user Maybe type(collection)(n // 2 for n in collection if n % 2 == 0)? Not super pretty, but I think it would work.
 
@ATaco because lua 5.1 is like minecraft 1.12
its a baseline standard
also the roblox edition of lua is fully backwards compatible with 5.1
 
1.7.3 > 1.12 s m h
 
well by now its reached 1.12, soon to be 1.16 i think
 
1.16 is pretty popular, though it's being quickly overtaken by 1.18
 
and also luaj only supports 5.2
 
 
1 hour later…
11:51 PM
@DLosc good point, the custom collections could have a common way to be constructed from a generator
 

« first day (4407 days earlier)      last day (453 days later) »