Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 22:45
    straight-shoota milestoned #11229
  • 22:43
    straight-shoota demilestoned #11343
  • 19:54
    Blacksmoke16 labeled #11549
  • 19:47
    kalinon labeled #11549
  • 19:47
    kalinon opened #11549
  • 18:14
    straight-shoota labeled #11532
  • 18:13
    straight-shoota edited #11532
  • 18:11
    straight-shoota synchronize #11532
  • 17:58
    straight-shoota milestoned #11545
  • 17:58
    straight-shoota milestoned #11379
  • 17:56
    neatorobito synchronize #11543
  • 17:22
    oprypin milestoned #11534
  • 16:18
    straight-shoota edited #11177
  • 16:17
    straight-shoota milestoned #11475
  • 15:06
    straight-shoota review_requested #11475
  • 15:04
    straight-shoota synchronize #11475
  • 15:03
    straight-shoota synchronize #11475
  • 14:01
    straight-shoota closed #11523
  • 13:35
    straight-shoota demilestoned #11515
  • 13:24
    beta-ziliani unlabeled #11529
mfiano
@mjfiano:matrix.org
[m]
Very nice
Are there any common general utility libraries for Crystal?
Things that got rejected for the stdlib, or things useful for everyday programming that didn't make it into the language yet for some reason or other?
George Dietrich
@Blacksmoke16
Like what?
There are some, but depends on what you are doing exactly
I'd definitely suggest using https://github.com/crystal-ameba/ameba tho
mfiano
@mjfiano:matrix.org
[m]
I have that and debug.cr so far. I meant like general purpose utilities. Lisp has "alexandria", which includes necessities like correct macro writing macros such as once_only I discussed before, pattern matching stuff, etc etc
George Dietrich
@Blacksmoke16
Can't say I've heard of debug.cr. I also use Athena's spec component sometimes, but other than that nothing comes to mind stdlib usually has everything I need.
mfiano
@mjfiano:matrix.org
[m]
debug.cr is basically pp! but with color, line numbers, etc, and can use in the middle of expressions
George Dietrich
@Blacksmoke16
Fair enough
mfiano
@mjfiano:matrix.org
[m]
Ok so
In my main src/origin.cr file I have this and only this:
require "./origin/scalar"
require "./origin/shared"
require "./origin/vector"
In vector.cr it starts out like this:
module Origin::Vector(T)
  forward_missing_to @data

  include Origin::Shared(Float64) # Error: undefined constant Origin::Shared

  ...
end
The include compiles if I put it in a macro included though
These are the errors that drive me crazy because I don't see where they are coming from.
I only have 3 files, and this is the last file parsed
shared.cr should have already been loaded and the module defined...
George Dietrich
@Blacksmoke16
Do you have this all pushed up atm?
mfiano
@mjfiano:matrix.org
[m]
No but I could
Give me a minute
mfiano
@mjfiano:matrix.org
[m]
Hey Mr. Grant, my stalker :)
George Dietrich
@Blacksmoke16
what were you running to get that?
mfiano
@mjfiano:matrix.org
[m]
I didn't think to run that, because the semantic analyzer in nim showed the aforementioned error in my buffer upon saving
s/vim/vim/
err nim -> vim. must be almost that time :/
The test code I have under those 3 requires is:
alias V2 = Origin::Vector2
x = V2.new(2.0, 8.123)
pp! x + x
pp! x == V2.new(2.0, 8.123_001)
pp! V2.rand(V2::ZERO, V2::ONES)
pp! V2.rand
pp! V2::ZERO.zero?
pp! x.clamp
pp! x.same_direction?(x)
pp! V2::LEFT
George Dietrich
@Blacksmoke16
thz
worked fine for me?
mfiano
@mjfiano:matrix.org
[m]
:/
George Dietrich
@Blacksmoke16
sure you dont have anything else going on?
mfiano
@mjfiano:matrix.org
[m]
I'm positive. everything else is checked in
George Dietrich
@Blacksmoke16
what's crystal --version say?
and like crystal env
mfiano
@mjfiano:matrix.org
[m]

https://i.lisp.cl/iMWLBA.png

This is what I see when I save that file

1.0.0
George Dietrich
@Blacksmoke16
ohh, let me make that not a macro now
mfiano
@mjfiano:matrix.org
[m]
CRYSTAL_CACHE_DIR=/home/mfiano/.cache/crystal
CRYSTAL_PATH=lib:/usr/lib/crystal
CRYSTAL_VERSION=1.0.0
CRYSTAL_LIBRARY_PATH=''
CRYSTAL_OPTS=''
George Dietrich
@Blacksmoke16
ah ok
i kno why
no nvm
mfiano
@mjfiano:matrix.org
[m]
can you even repro?
George Dietrich
@Blacksmoke16
yea i get Error: undefined method 'rand' for Origin::Vector2.class
mfiano
@mjfiano:matrix.org
[m]
Good, it's not just me
George Dietrich
@Blacksmoke16
i think i see the problem tho
mfiano
@mjfiano:matrix.org
[m]
So yeah, if you can figure out why the macro hook makes it work, i might be able to figure out why i get tons of these similar problems
George Dietrich
@Blacksmoke16
by including Origin::Shared that triggers the macro included hook which extends the class methods on Origin::Vector, but by wrapping that in another macro included makes it not expand until Origin::Vector is included in the actual Vector* types
mfiano
@mjfiano:matrix.org
[m]
I think my mind just imploded