Skip to content

Instantly share code, notes, and snippets.

View realjenius's full-sized avatar

R.J. Lorimer realjenius

View GitHub Profile
@realjenius
realjenius / method.rb
Created November 24, 2011 17:51
Method Inference
class MethodDefinition
def infer(typer)
forced_type = @return_type
inferred_type = @body.infer(typer)
actual_type = if forced_type.nil?
inferred_type
else
forced_type
end
@realjenius
realjenius / example_mirah_as_java.java
Created November 24, 2011 17:51
Example Mirah as Java
// With:
public class SomeClass extends java.lang.Object {
public java.util.Map singleton_map(java.lang.String a, java.lang.String b) {
java.util.HashMap map = new java.util.HashMap();
map.put(a, b);
return map;
}
}
// Without:
@realjenius
realjenius / gist:1391904
Created November 24, 2011 17:50
Example Mirah
import java.util.Map
import java.util.HashMap
class SomeClass
def singleton_map(a:string, b:string):Map
map = HashMap.new
map.put(a,b)
return map
end
end
@realjenius
realjenius / *.rb
Created November 24, 2011 17:49
AST Impls
class LocalDeclaration
def infer(typer)
type = @type_node.infer(typer) #type_node is the local assignment
if(!type)
typer.defer(self)
end
return type
end
end
@realjenius
realjenius / typer.rb
Created November 24, 2011 17:48
Type resolve
class Typer
def resolve
old_len = @deferred_nodes.length
while true
@deferred_nodes.each do |node|
type = infer(node)
if type != nil
@deferred_nodes.remove(node)
end
end
@realjenius
realjenius / typer.rb
Created November 24, 2011 17:47
Typer defer
class Typer
def defer(node)
@deferred_nodes << node
end
end
@realjenius
realjenius / typer.rb
Created November 24, 2011 17:45
typer.rb
class Typer
def infer(node)
node.infer(self)
# error handling business
end
end
@realjenius
realjenius / mirah.rb
Created November 24, 2011 17:44
mirah typer 1
typer = Typer.new
asts.each { |ast| typer.infer(ast) }
typer.resolve
@realjenius
realjenius / gist:1391888
Created November 24, 2011 17:43
mirah 3
def method_a()
return method_b(5) + method_b(6)
end
def method_b(x:int)
return x * -1
end
@realjenius
realjenius / mirah2.java
Created November 24, 2011 17:43
mirah 2
var myMap = new HashMap<String,String>();