The Declarative Languages and Artificial Intelligence (DTAI) group of KU Leuven
(Belgium) invites applicants for a postdoctoral position in the area of
programming languages. This position has been created at the occasion of the
new appointment of prof. Tom Schrijvers as research professor at KU Leuven. The
position's aim is to reinforce the research activities in functional
programming, logic programming and/or programming language theory.
To apply you must hold a recent PhD (or be about to graduate) in one of the
above areas of programming languages. Candidates are expected to have
high-quality publications in peer-reviewed conferences and journals.
The postdoc will work closely with prof. Schrijvers and his PhD students,
participate in ongoing research activities and enjoy the freedom to develop new
lines of research.
The position is for 2 x 1 year and can be further extended. The salary is
competitive and the starting date negotiable. Moreover, KU Leuven's policy of
equal opportunities and diversity applies to this position.
Please send your application to prof. Tom Schrijvers (tom dot schrijvers at cs
dot kuleuven dot be) by October 15, 2014. Your application should contain:
- A cover letter explaining your interest in the position.
- Your curriculum vitae.
- A short research statement (max. 3 pages).
- The names and contact details of three people who can, if asked, write
letters of reference.
Breaking the Complexity Barrier of Pure Functional Programs with Impure Data Structures by Pieter Wuille and Tom Schrijvers:
Pure functional programming language offer many advantages over impure languages. Unfortunately, the absence of destructive update, imposes a complexity barrier. In imperative languages, there are algorithms and data structures with better complexity. We present our project for combining existing program transformation techniques to transform inefficient pure data structures into impure ones with better complexity. As a consequence, the programmer is not exposed to the impurity and retains the advantages of purity.
This paper is along the same lines a question I asked a couple of years ago. The idea here is to allow programming using immutable interfaces, and then automatically transform it into a more efficient mutable equivalent.
A beginner was asking me a question about this program:module Test where data Tree a = EmptyTree | Node a (Tree a) (Tree a) deriving Show test = show (EmptyTree)
Compiling with ghc -c shows the following error:test.hs:3:8: No instance for (Show a0) arising from a use of ‘show’ The type variable ‘a0’ is ambiguous ....
But if I type directly into a GHCi prompt, there is no more error:Prelude> data Tree a = EmptyTree | Node a (Tree a) (Tree a) deriving Show Prelude> let test = show (EmptyTree) Prelude> test "EmptyTree" Prelude> show (EmptyTree) "EmptyTree"
To get this behavior in GHCi, which language extension should I use?submitted by ninegua
[link] [2 comments]
To make it easier to debug code compiled with GHCJS, the latest version of leksah includes a WebKitGtk based Web Inspect pane. Just right click in the Out pane and select Inspect Element to activate it.
Here is what it looks like in action.
You can also add one of these to your natively compiled ghcjs-dom applications by adding enableInspector to the code (for example ghcjs-dom-hello). Right click menu will include an Inspect Element menu item.submitted by hamishmack
[link] [6 comments]
I have an office with a nice large window, but more often than not I have to close the shades to be able to see something on my screen. Even worse: There were so many nice and sunny days where I would have loved to take my laptop outside and work there, but it (a Thinkpad T430s) is simply not usable in bright sun. I have seen those nice eInk based eBook readers, who are clearer the brighter they are. That’s what I want for my laptop, and I am willing to sacrifice color and a bit of usability due to latency for being able to work in the bright daylight!
So while I was in Portland for DebConf14 (where I guess I felt a bit more like tinkering than otherwise) I bought a Kobo Aura HD. I chose this device because it has a resolution similar to my laptop (1440×1080) and I have seen reports from people running their own software on it, including completely separate systems such as Debian or Android.
This week, I was able to play around with it. It was indeed simple to tinker with: You can simply copy a tarball to it which is then extracted over the root file system. There are plenty of instructions online, but I found it easier to take them as inspiration and do it my way – with basic Linux knowledge that’s possible. This way, I extended the system boot script with a hook to a file on the internal SD card, and this file then runs the telnetd daemon that comes with the device’s busybox installation. Then I just have to make the device go online and telnet onto it. From there it is a pretty normal Linux system, albeit without an X server, using the framebuffer directly.
I even found an existing project providing a VNC client implementation for this and other devices, and pretty soon I could see my laptop screen on the Kobo. Black and white worked fine, but colors and greyscales, including all anti-aliased fonts, were quite broken. After some analysis I concluded that it was confusing the bit pattern of the pixels. Luckily kvncclient shares that code with koreader, which worked fine on my device, so I could copy some files and settings from there et voilá: I now have an eInk monitor for my laptop. As a matter of fact, I am writing this text with my Kobo sitting on top of the folded-back laptop screen!
I did some minor adjustments to my laptop:
- I changed the screen size to match the Kobo’s resolution. Using xrandr’s --panning option this is possible even though my real screen is only 900 pixels high.
- I disabled the cursor-blink where possible. In general, screen updates should be avoided, so I hide my taffybar (which has a CPU usage monitor) and text is best written at the very end of the line (and not before a, say, </p>).
- My terminal windows are now black-on-white.
- I had to increase my font-size a bit (the kobo has quite a high DPI), and color is not helpful (so :set syntax=off in vim).
All this is still very manual (going online with the kobo, finding its IP address, logging in via telnet, killing the Kobo's normal main program, starting x11vnc, finding my ip address, starting the vnc client, doing the adjustments mentioned above), so I need to automate it a bit. Unfortunately, there is no canonical way to extend the Kobo by your own application: The Kobo developers made their device quite open, but stopped short from actually encouraging extensions, so people have created many weird ways to start programs on the Kobo – dedicated start menus, background programs observing when the regular Kobo app opens a specific file, complete replacements for the system. I am considering to simply run an SSH server on the device and drive the whole process from the laptop. I’ll keep you up-to-date.
A dream for the future would be to turn the kobo into a USB monitor and simply connect it to any computer, where it then shows up as a new external monitor. I wonder if there is a standard for USB monitors, and if it is simple enough (but I doubt it).
A word about the kobo development scene: It seems to be quite active and healthy, and a number of interesting applications are provided for it. But unfortunately it all happens on a web forum, and they use it not only for discussion, but also as a wiki, a release page, a bug tracker, a feature request list and as a support line – often on one single thread with dozens of posts. This makes it quite hard to find relevant information and decide whether it is still up-to-date. Unfortunately, you cannot really do without it. The PDF viewer that comes with the kobo is barely okish (e.g. no crop functionality), so installing, say, koreader is a must if you read more PDFs than actual ebooks. And then you have to deal with the how-to-start-it problem.
That reminds me: I need to find a decent RSS reader for the kobo, or possibly a good RSS-to-epub converter that I can run automatically. Any suggestions?
PS and related to this project: Thanks to Kathey!
This is better than almost all the monads tutorial out there: https://www.youtube.com/watch?v=ZhuHCtR3xq8
Take any 5th grader that is taught in school about functions, injection, surjection, bijection, associativity, commutativity, neutral element, simetric element and groups, rings etc. and functional programming just gets intuitive and easy once you hit the wall of "tutorials" and "books".
The reason why math is not coming back to computer programming is all the people that write "tutorials"/"books". The end.submitted by tetru
[link] [10 comments]
Video of Stephen Wolfram showing off the Wolfram Language and sharing his perspective on the design of the language at Strange Loop conference.