diff --git a/icfp-2016/src/.gitignore b/icfp-2016/src/.gitignore new file mode 100644 index 0000000..c8bfed5 --- /dev/null +++ b/icfp-2016/src/.gitignore @@ -0,0 +1,6 @@ +*.hi +*.hs +*.cmi +*.cmo +*.out +*.class diff --git a/icfp-2016/src/printf/Printf.java b/icfp-2016/src/printf/Printf.java new file mode 100644 index 0000000..b2f71b2 --- /dev/null +++ b/icfp-2016/src/printf/Printf.java @@ -0,0 +1,8 @@ +public class Printf { + public static void main(String[] args) { + A a = new A(); + System.out.printf("yolo %d\n", a); + } +} + +class A {} diff --git a/icfp-2016/src/printf/README.md b/icfp-2016/src/printf/README.md new file mode 100644 index 0000000..8d942dd --- /dev/null +++ b/icfp-2016/src/printf/README.md @@ -0,0 +1,13 @@ +printf +=== + +#### What languages have type safe printf? +- gcc (warning) +- ocaml (warning for missing args, error for wrong type) + + +#### What languages fail at runtime? +- Java (alt: string builder) +- Scala (alt: scala macros) +- Haskell (alt: [Formatting](http://chrisdone.com/posts/formatting) package) +- Python diff --git a/icfp-2016/src/printf/printf.c b/icfp-2016/src/printf/printf.c new file mode 100644 index 0000000..dde2e06 --- /dev/null +++ b/icfp-2016/src/printf/printf.c @@ -0,0 +1,6 @@ +#include + +int main(void) { + printf("yo %d", "lo"); + return 0; +} diff --git a/icfp-2016/src/printf/printf.ml b/icfp-2016/src/printf/printf.ml new file mode 100644 index 0000000..2f8c7fb --- /dev/null +++ b/icfp-2016/src/printf/printf.ml @@ -0,0 +1,4 @@ +let _ = + Format.printf "yo %d\n"; + Format.printf "yo %d\n" "lo"; + ()