Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • May 21 17:59
    HertzDevil labeled #12064
  • May 21 17:59
    HertzDevil labeled #12064
  • May 21 17:59
    HertzDevil labeled #12064
  • May 21 17:59
    HertzDevil opened #12064
  • May 20 20:01
    beta-ziliani milestoned #12033
  • May 20 19:13
    beta-ziliani milestoned #12040
  • May 20 18:57
    beta-ziliani milestoned #11984
  • May 20 18:50
    beta-ziliani review_requested #11972
  • May 18 13:16
    hugopl closed #12062
  • May 17 20:20
    Blacksmoke16 synchronize #12044
  • May 17 18:19
    straight-shoota edited #11947
  • May 17 18:19
    straight-shoota milestoned #11947
  • May 17 18:18
    straight-shoota closed #11971
  • May 17 18:18
    straight-shoota closed #11970
  • May 17 17:21
    HertzDevil labeled #12063
  • May 17 17:21
    HertzDevil labeled #12063
  • May 17 17:21
    HertzDevil labeled #12063
  • May 17 17:21
    HertzDevil opened #12063
  • May 17 16:29
    HertzDevil labeled #12062
  • May 17 13:50
    hugopl opened #12062
George Dietrich
@Blacksmoke16
but if the mixins are included in every type, doesnt that defeat the purpose?
basically recreating the same structure, but in a diff way
mfiano
@mjfiano:matrix.org
[m]
So I guess the 2 solutions I see are
1) Copy the include Origin::Shared into each concrete type instead of once in the Vector mixin.
2) I already forgot because I'm tired :(
Well right now, yes it does defeat the purpose. It might get a little hard to model with inheritance later on
Shared is intended to be stuff common to all base math types (vectors, matrices, and quaternions). Vector is stuff common to all vectors (but Vector3 is special and will define more stuff for itself), and then there will be higher order math types making use of these 3 base types or varying dimensions
It's a rather large project, about 20kloc of Lisp
George Dietrich
@Blacksmoke16
even if you have methods defined on parent types, you can override them
but fair enough
mfiano
@mjfiano:matrix.org
[m]
I suppose I could try inheritance tomorrow if you think it is a better fit
Really, I'm used to functional programming and a very different kind of OOP (methods not associated with classes at all with multiple dispatch)
So this way of coding is very new to me
George Dietrich
@Blacksmoke16
idk what other stuff you have to do, but atm it seems like it might be better
mfiano
@mjfiano:matrix.org
[m]
That's good enough for me. Thanks for taking a peek
Wait, Crystal is single inheritance right?
George Dietrich
@Blacksmoke16
yes
mfiano
@mjfiano:matrix.org
[m]
This may be difficult already then...but I'll think about it tomorrow
George Dietrich
@Blacksmoke16
:grimacing: worth looking into at least
mfiano
@mjfiano:matrix.org
[m]
Are class/struct-level constants inherited?
George Dietrich
@Blacksmoke16
mfiano
@mjfiano:matrix.org
[m]
Ok that's one thing over mixins then
mfiano
@mjfiano:matrix.org
[m]
If I have a macro method on an abstract struct, will it be inherited by children such that the @type is expanded for the concrete struct?
George Dietrich
@Blacksmoke16
If you put it in a macro inherited probably
mfiano
@mjfiano:matrix.org
[m]
Ok.

Probably not, but is there an existing library for outputting tabulated numbers, particularly floats? I would like to define an #inspect method for 4x4 matrices so it looks like:

0.123 0.484824 12.434934 93.32459
10.4944 0.43244 343.3434 434.0
23.2384 29.34242 93.22424 0.12525
0.2435 0.533556789 0.645532 0.2434534

except:
1) padding should be auto-inserted such that the whitespace around each column is aligned
2) padding should be auto-inserted such that the decimal points in a column are all aligned.

George Dietrich
@Blacksmoke16
dunno if its possible with it, but might be best bet with stdlib
mfiano
@mjfiano:matrix.org
[m]
Hmm ok
mfiano
@mjfiano:matrix.org
[m]
tablo looks very close to what I want. I would definitely need it to work for 1D StaticArray's though which it doesn't support...wonder if I can overload something.
George Dietrich
@Blacksmoke16
doesnt support how?
mfiano
@mjfiano:matrix.org
[m]
docs mention it supporting only Array type, and 2D
George Dietrich
@Blacksmoke16
could call .to_a on it
ofc that would allocate memory and stuff tho but might not be terrible just for UI output like that :shrug:
mfiano
@mjfiano:matrix.org
[m]
Would have to convert it to [][] too
err
array of arrays
I'll see. I don't need most of its features and need to see if I can opt out of them, PR it, or what
like, don't want bars drawn, nor column/row labels
George Dietrich
@Blacksmoke16
problem is going come down to it storing the data as an ivar, which can't be a generic Indexable
generics might solve this but :shrug:
mfiano
@mjfiano:matrix.org
[m]
Yeah it'll all be a learning experience. Been using my over-engineered Lisp math library for about a decade, and I'm always annoyed at how difficult it is to read tabular matrix data when debugging stuff.
George Dietrich
@Blacksmoke16
whats it look like now if you just do pp @data?
mfiano
@mjfiano:matrix.org
[m]
Or rather, unformatted data period
George Dietrich
@Blacksmoke16
prob wouldn't be too bad
mfiano
@mjfiano:matrix.org
[m]
Ah, I don't have a matrix type yet
But in Lisp it looks like this, which is readable only because the PRNG seed made mostly the same digits to the left of the point:
[428.206840, 641.180912, 529.714861, 466.054420
 449.058745, 849.850763, 606.009279, 977.445823
 242.486631, 25.559494, 67.856057, 165.478953
 597.418470, 179.321626, 859.131128, 479.821710]
George Dietrich
@Blacksmoke16
ah pp by default prints a long list, not a 4x4 grid
mfiano
@mjfiano:matrix.org
[m]
So those rand methods in the ClassMethods module...
If I use inheritance, and stick those in an abstract parent struct, that isn't going to cause issues with eg; .new being undefined for the abstract type?
George Dietrich
@Blacksmoke16
if you're using inheritance now just define them as class methods in the parent and call it a day
i dont think so?