Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 14:45
    straight-shoota labeled #11531
  • 14:45
    straight-shoota labeled #11531
  • 14:45
    straight-shoota opened #11531
  • 14:21
    straight-shoota opened #11530
  • 14:21
    straight-shoota labeled #11530
  • 14:21
    straight-shoota labeled #11530
  • 14:13
    beta-ziliani labeled #11529
  • 14:13
    beta-ziliani labeled #11529
  • 14:12
    beta-ziliani opened #11529
  • 13:28
    beta-ziliani edited #5430
  • 13:28
    beta-ziliani edited #5430
  • 13:06
    straight-shoota synchronize #11514
  • 13:02
    beta-ziliani milestoned #11366
  • 12:46
    straight-shoota milestoned #11514
  • 12:46
    straight-shoota milestoned #11343
  • 12:27
    straight-shoota labeled #11528
  • 12:27
    straight-shoota opened #11528
  • 12:27
    straight-shoota labeled #11528
  • 12:27
    straight-shoota labeled #11528
  • 12:26
    beta-ziliani milestoned #11512
mfiano
@mjfiano:matrix.org
[m]
Ah is that mentioned on the homepage somewhere?
George Dietrich
@Blacksmoke16
dont think so
mfiano
@mjfiano:matrix.org
[m]
Ah "Programming Crystal" I take it
George Dietrich
@Blacksmoke16
yea, id prob just wait for the other to come out, as it'll be more up to date and such
mfiano
@mjfiano:matrix.org
[m]
What's this other one?
George Dietrich
@Blacksmoke16
it's WIP atm, but should be out later this year
mfiano
@mjfiano:matrix.org
[m]
Is the name or link still WIP?
George Dietrich
@Blacksmoke16
its still being written so both?
mfiano
@mjfiano:matrix.org
[m]
Ah I see. I suppose it was just mentioned in passing here or the forums then.
George Dietrich
@Blacksmoke16
https://crystal-lang.org/reference/syntax_and_semantics/index.html is also very good if you haven't read thru it yet
mfiano
@mjfiano:matrix.org
[m]
I read the whole thing yesterday.
George Dietrich
@Blacksmoke16
:thumbsup: nice
mfiano
@mjfiano:matrix.org
[m]
Working my way through the stdlib api docs now
(while writing code, because no book will teach you to do :))
Benjamin Wade
@RespiteSage
Advent of Code is also a very good source for exercises, especially if you want to learn the standard library. There's a lot of opportunity to use the very useful methods on Iterable/Enumerable/Indexable/Array.
mfiano
@mjfiano:matrix.org
[m]
I have a problem with AoC even with the language I've been using for ~20 years...not very good at human descriptions of problems with tons red herrings
Benjamin Wade
@RespiteSage
That's fair.
I tend to use Crystal pretty often to implement math routines that I find interesting (e.g. I've recently been interested in Lucas Sequences for estimating roots), so that could also be another way to practice, if you find that interesting.
mfiano
@mjfiano:matrix.org
[m]
Yes, I am writing a little linear algebra library to practice, actually.
Benjamin Wade
@RespiteSage
:thumbsup:
mfiano
@mjfiano:matrix.org
[m]
Does Crystal have the distinction of shallow vs deep copying builtin?
clone vs dup i take it?
George Dietrich
@Blacksmoke16
yes
mfiano
@mjfiano:matrix.org
[m]
Thanks, and the last question before lunch: Is there any way to emit the disassembly, or at the very least, the IR, of a given method (preferably the former)?
George Dietrich
@Blacksmoke16
IR meaning LLVM IR yea?
mfiano
@mjfiano:matrix.org
[m]
Yes, though that is foreign to me so preferably the machine code (asm)
George Dietrich
@Blacksmoke16
--emit [asm|obj|llvm-bc|llvm-ir] Comma separated list of types of output for the compiler to emit
mfiano
@mjfiano:matrix.org
[m]
? I want to inspect a single function.
George Dietrich
@Blacksmoke16
the compiler explorer allows going to a specific def, but you'd prob need to include prelude for your code to work
otherwise there isn't a way to output specific IR, other than the whole file afaik
so would need to output all the IR and find the method you want in it
mfiano
@mjfiano:matrix.org
[m]
Ok thanks. Nothing will beat (disassemble name) at runtime I suppose :)
manveru
@manveru:matrix.org
[m]
so... method overloading on works for argument and not return types?
George Dietrich
@Blacksmoke16
yes
why?
manveru
@manveru:matrix.org
[m]
well, would've been a bit nicer to write the other way :)
George Dietrich
@Blacksmoke16
got some example code?
manveru
@manveru:matrix.org
[m]
def convert(value : String) : Array(String) instead of def convert(value : String, kind : Array(String).class)
George Dietrich
@Blacksmoke16
how would it know which one to use
i guess it could look at each overload's return type and compare that to something? :shrug:
manveru
@manveru:matrix.org
[m]
well, i have a bunch of those that take a string and return some other type
George Dietrich
@Blacksmoke16
could you monkey patch constructors onto various other types instead?
manveru
@manveru:matrix.org
[m]
given that crystal already infers the return type, and it knows what type i want to assign to a given instance variable, i was hoping there was a way to elide that annoation
George Dietrich
@Blacksmoke16
def Array.convert(value : String)
  # ...
end

kind.convert value
manveru
@manveru:matrix.org
[m]
yeah... not a big fan of messing with existing classes :)
George Dietrich
@Blacksmoke16
that's how all the JSON/YAML serializable stuff is implemented
manveru
@manveru:matrix.org
[m]
anyway, just got my code to pass a bunch of tests, here's what i got: https://gist.github.com/manveru/5050af58be7e36bbc9d116eb5d8eccba
maybe you can suggest some other ways to do this better :)
so to add other conversions, you'd add another convert method to Test::Configuration instead of having them infect all other types... i guess i'm still thinking functional