What do “reify” and “reification” mean in the context of (functional?) programming?

So I read up on this, and it is pretty much what it means: taking an abstract concept and making it concrete. Or, there is a proxy that represents the abstract concept. For example, in Lisp, the concept of procedure abstraction and application is reified when you use lambdas. Reification by itself is a broad … Read more

Ruby Metaprogramming: dynamic instance variable names

The method you are looking for is instance_variable_set. So: hash.each { |name, value| instance_variable_set(name, value) } Or, more briefly, hash.each &method(:instance_variable_set) If your instance variable names are missing the “@” (as they are in the OP’s example), you’ll need to add them, so it would be more like: hash.each { |name, value| instance_variable_set(“@#{name}”, value) }

How do I convert a Ruby class name to a underscore-delimited symbol?

Rails comes with a method called underscore that will allow you to transform CamelCased strings into underscore_separated strings. So you might be able to do this: FooBar.name.underscore.to_sym But you will have to install ActiveSupport just to do that, as ipsum says. If you don’t want to install ActiveSupport just for that, you can monkey-patch underscore … Read more

What is the __dict__.__dict__ attribute of a Python class? [duplicate]

First of all A.__dict__.__dict__ is different from A.__dict__[‘__dict__’]. The former doesn’t exist and the latter is the __dict__ attribute that the instances of the class would have. It’s a data descriptor object that returns the internal dictionary of attributes for the specific instance. In short, the __dict__ attribute of an object can’t be stored in … Read more

Compile time string hashing

This is a little bit late, but I succeeded in implementing a compile-time CRC32 function with the use of constexpr. The problem with it is that at the time of writing, it only works with GCC and not MSVC nor Intel compiler. Here is the code snippet: // CRC32 Table (zlib polynomial) static constexpr uint32_t … Read more

Get the value of an instance variable given its name

The most idiomatic way to achieve this is: some_object.instance_variable_get(“@#{name}”) There is no need to use + or intern; Ruby will handle this just fine. However, if you find yourself reaching into another object and pulling out its ivar, there’s a reasonably good chance that you have broken encapsulation. If you explicitly want to access an … Read more

How to call methods dynamically based on their name? [duplicate]

What you want to do is called dynamic dispatch. It’s very easy in Ruby, just use public_send: method_name=”foobar” obj.public_send(method_name) if obj.respond_to? method_name If the method is private/protected, use send instead, but prefer public_send. This is a potential security risk if the value of method_name comes from the user. To prevent vulnerabilities, you should validate which … Read more

Best introduction to C++ template metaprogramming? [closed]

[Answering my own question] The best introductions I’ve found so far are chapter 10, “Static Metaprogramming in C++” from Generative Programming, Methods, Tools, and Applications by Krzysztof Czarnecki and Ulrich W. Eisenecker, ISBN-13: 9780201309775; and chapter 17, “Metaprograms” of C++ Templates: The Complete Guide by David Vandevoorder and Nicolai M. Josuttis, ISBN-13: 9780201734843. Todd Veldhuizen … Read more