Skip to content

Instantly share code, notes, and snippets.

@kiritsuku
kiritsuku / output.txt
Created April 5, 2013 13:32
bug in scalac
$ scalac -Yrangepos -Xprint-pos -Xprint:parser,typer y.scala
[[syntax trees at end of parser]] // y.scala
[0:171]package [0:0]<empty> {
[0:51]object X extends [9:51][52]scala.AnyRef {
[9]def <init>() = [9]{
[9][9][9]super.<init>();
[9]()
};
[13:26]val d = [21:26][21:26][21:26]new [25:26]D();
[29:49][29:37]d.method([38:48][38:43]value = [46:48]10)
object ImplicitMacros {
implicit class C(val a: Int) {
def add(b: _) = macro Impl.add
}
}
trait Impl extends Macro {
def add(b: c.Tree) = {
import c.universe._
val s = Select(c.prefix.tree, TermName("a"))
> last core/compile:compile
[debug]
[debug] Initial source changes:
[debug] removed:Set()
[debug] added: Set(/home/antoras/dev/Scala/sbt-example-paradise/core/src/main/scala/macrouse/Test.scala)
[debug] modified: Set()
[debug] Removed products: Set()
[debug] Modified external sources: Set()
[debug] Modified binary dependencies: Set()
[debug] Initial directly invalidated sources: Set(/home/antoras/dev/Scala/sbt-example-paradise/core/src/main/scala/macrouse/Test.scala)
@kiritsuku
kiritsuku / Build.scala
Last active December 14, 2015 11:50
macros test
import sbt._
import Keys._
object BuildSettings {
val buildSettings = Defaults.defaultSettings ++ Seq(
organization := "org.scalamacros",
version := "1.0.0",
scalacOptions ++= Seq(
"-deprecation",
"-feature",
$ scalac x.scala
$ scala Test
List(Test$B$@4ce32802, Test$C$@5557c2bd)
List(Test$A$@5ef4f44a, Test$D$@23d256fa)
List(Test$A$@5ef4f44a, Test$B$@4ce32802)
List(Test$C$@5557c2bd, Test$B$@4ce32802, Test$A$@5ef4f44a)
List(Test$B$@4ce32802, Test$A$@5ef4f44a, Test$B$@4ce32802)
@kiritsuku
kiritsuku / trib.hs
Created November 19, 2012 20:28
corec tribonacci
trib = 1 : 1 : 1 : zipWith (+) trib (zipWith (+) (tail trib) (tail (tail trib)))
take 15 trib --[1,1,1,3,5,9,17,31,57,105,193,355,653,1201,2209]
@kiritsuku
kiritsuku / trib.hs
Created November 19, 2012 20:26
tailrec tribonacci
trib n = if n <= 2 then 1 else loop 1 1 1 2
where loop a b c i = if i < n then loop b c (a+b+c) (i+1) else c
@kiritsuku
kiritsuku / p32.scala
Created November 13, 2012 12:57
project euler problem 32 - one line and unreadable
(100 until 10000).par.filter(x=>(2 to math.sqrt(x).toInt).filter(x%_==0).find{p=>val str=s"$p$x${x/p}";str.length==9&&str.sorted=="123456789"}.isDefined).sum
@kiritsuku
kiritsuku / p32.scala
Created November 13, 2012 12:44
project euler problem 32
def p32 = {
def hasAllDigits(str: String) =
str.length == 9 && str.sorted == "123456789"
def multiplicants(x: Int) =
(2 to math.sqrt(x).toInt) filter (x%_ == 0)
def isPandigital(x: Int) =
multiplicants(x) exists (p => hasAllDigits(s"$p$x${x/p}"))
object X extends App {
val s = StatementParser("x = (x + 1)")
println(s)
}
trait Expression
case class Plus(a: Expression, b: Expression) extends Expression
case class Var(name: String) extends Expression
case class Num(n: Int) extends Expression
trait Statement