Preferences

alain_gilbert
Joined 451 karma
http://agilbert.name/

alain.gilbert.15@gmail.com


  1. reminds me of an project I made many years ago to manage dependencies in between repositories. So if project A was waiting for a fix in project B to be in production, you could draw a line between the two commits (from project A to project B) and get notified when the commit in project B gets into the "production" branch. And then merge and deploy your feature branch from project A.
  2. I worked on a toy programming language (that compile down to golang), which is a fork of the go lexer/parser, but it changes how functions can only return one value allowing the use of Result[T]/Option[T] and error propagation operators `!` and `?`.

    It has enums (sum type), tuple, built-in Set[T], and good Iterator methods. It has very nice type inferred lambda function (heavily inspired by the swift syntax)... lots of good stuff!

    https://github.com/alaingilbert/agl

  3. @tinfoilhatter if that's the example of an `hostile and abrasive member of the Nim community` looks to me like the nim community is doing just fine.
  4. > ...and views he expressed to me regarding climate change...

    Is that for real? I bet I can find some chocolate chip cookie recipe that the Go team would disagree with me. I ain't ever using Go again.

  5. > Even after reading the article, it's not clear why that particular expression is so egregiously poor.

    I'm glad I'm not the only one wondering why this is not instant to type check.

  6. Seems like it got fixed just now. Thanks for doing it. It looks much better now :)
  7. I'm well aware of it. But I don't think I have ever seen an editor/website which would display it as 9 spaces. Github for example default to 4 spaces width.
  8. I like how he kept "tabs" (and display it as 9 spaces) to make it as ugly as possible for the bad example, then proceed to use 4 spaces for the other examples.
  9. 61 dependencies, no codegen. Nothing special really.
  10. I have a fairly small go project (100k loc) and it takes ~30sec to build.

    I'd be thrilled to have it build in 300ms.

    (Using a macbook pro 2019)

  11. > Honestly, who cares about the difference between 1s vs 100ms vs 10ms for a build though?

    I definitely do. Not necessarily because of the 10ms vs 1s. But because of the later stage when it becomes 600ms vs 60s.

  12. I made winsweeper, which will move the mine if there is no safe tile left for you to discover.

    https://github.com/alaingilbert/winsweeper

  13. For case like this, I'd say your text editor should definitely just be able to tell you right away that this variable is a "string" when you mouse over it.
  14. Or if he was to use any kind of decent text editor, he could also just place his mouse over the variable and see the type it has.

    Then comes the hard part "where is it defined"... he could even press "command" and then click on it.

  15. The most ironic thing is that if you search for "nazi programming language" you'll find gleam.
  16. That's why there is a "Tuple" expression that you can use instead, which allows you to easily return multiple values, and destructure them as well.
  17. I'm working on this programming language that compiles to Go.

    The goal is to have it behave like typescript for Go, where any Go program would compile out of the box, but then you can use the new syntax.

    Featuring: built-in Set/Enum/Tuple/lambda/"error propagation operators"

    It also have a working LSP server and generates a sourcemap, so when you get a runtime stacktrace, it gives you the original line in your .agl file as well as the one in the generated .go file.

    I recently finish porting all my "advent of code 2024" in AGL -> https://github.com/alaingilbert/agl/tree/master/examples/adv...

    https://github.com/alaingilbert/agl

  18. Check out this toy project I made.

    It's basically a fork of the Go lexer/parser that adds Result/Option/Tuple/Set... propagation operators (and more)

    and it compiles down to Go code.

    https://github.com/alaingilbert/agl

  19. I was also quite inspired by borgo. But unlike borgo, yes, at this time nil is part of the language, which allows you to use other libraries without the need to make laborious wrappers. But if I can manage to create a script to automatically make the wrappers, I'd love to remove the nil keyword entirely.
  20. I haven't think much about it, a lot of things are probably going to change. I tried to get something working as fast as I possibly could, and in two weeks, lots of corners were cut to make it happen.

    Thanks for the feedback, it's good to know when something does not make sense ^^

  21. Yes, I got my inspiration mainly from swift and a little bit from vlang as well.

    eg: the @LINE "Compile time pseudo variable"

    https://github.com/alaingilbert/agl/blob/8b656a385207e57fd0f...

    https://docs.vlang.io/conditional-compilation.html#compile-t...

  22. I did use AI for the logo! Using Go libraries is still kinda rough, the standard library works fine, but for other libraries you'd need to (re) define the types manually. I'm trying to make something that would generate it all automatically, but there is some problems that I don't know how I would solve.

    For example, I'd like to have the pointers being automatically wrapped in a Option[T], but then if you have something like a linked list, with a struct containing pointers to other nodes, it gets complicated.

  23. I think I misread your original comment. We both seems to agree on the same things.
  24. I think you guys just made a bunch of low hanging fruits that are dead easy to make way better without too much effort.

    Which also provide the opportunity to maybe have a fairly successful project for the author of the rewrite project.

  25. I haven't seen anything about public/private properties/functions. So everything is public ?
  26. It is rare that you want to clear all the tiles that neighbors a flag itself.

    Usually you want to clear all tiles that touches, let say a "1" that is already touching a flag, and you can do just that by clicking that "1".

  27. In the same vein, I made "winsweeper" which will move the mine and let you win all the 50/50 IFF there is no more mines that you could find.

    https://github.com/alaingilbert/winsweeper

This user hasn’t submitted anything.

Keyboard Shortcuts

Story Lists

j
Next story
k
Previous story
Shift+j
Last story
Shift+k
First story
o Enter
Go to story URL
c
Go to comments
u
Go to author

Navigation

Shift+t
Go to top stories
Shift+n
Go to new stories
Shift+b
Go to best stories
Shift+a
Go to Ask HN
Shift+s
Go to Show HN

Miscellaneous

?
Show this modal