After many years of development, FP Complete is very happy and proud to announce the open sourcing of ide-backend. ide-backend has served as the basis for our development of School of Haskell and FP Haskell Center, by providing a high level, easy to use, and robust wrapper around the GHC API. We'd like to express our thanks to Duncan Coutts, Edsko de Vries, and Mikolaj Konarski for implementing this library on our behalf.
ide-backend provides a means to do a variety of tasks involving GHC, such as:
- Compile code
- Get compile error message
- Submit updated code for recompilation
- Extract type information
- Find usage locations
- Run generated bytecode
- Produce optimized executables
For much more information, you can see the Haddock documentation.
Members of the Commercial Haskell Special Interest Group have encouraged us to open source more of our work, to help them build more tools useful to real-world developers. We're happy to contribute.
ide-backend opens the possibility for many new and interesting tools. To give some ideas:
- A basis for providing a fast development web server while working on a code base. The idea here is a generalized yesod devel, which compiles and runs your web application on each change.
- Edward Kmett has a project idea of using ide-backend to extract and organize type information from a large number of packages
- Editor plugins can be improved, simplified, and begin to share much more code than they do today
- Lightweight tools for inspecting code
- Refactoring tools
I've shared information about this repository with some maintainers of existing tools in the Haskell world already, and hopefully now with the complete move to open source, we can start a much broader discussion going.
But today's release isn't just a code release; we also have demos! Edsko and Chris have been collaborating on some next-generation editor plugins, and have put together ide-backend-client with support for both Emacs and Atom. Chris has put together a screencast of his Emacs integration:<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="https://www.youtube.com/embed/Cwi1p2CLW54" width="420"></iframe>
We also have an early prototype tool at FP Complete for inspecting a code base and getting type information, based on ide-backend, GHCJS, and React.<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="https://www.youtube.com/embed/FI3u8uqZ2Q4" width="420"></iframe>Where we go from here
Open sourcing this library is just the first step.
- Duncan is planning on writing a blog post describing the architecture employed by this library.
- Edsko's ide-backend-client project is a great place to continue making contributions and playing with new ideas.
- FP Complete intends to release more of our ide-backend based tooling in the future as it matures.
- I've asked for a GSoC proposal on a better development web server, and I'm sure other proposals would be great as well
- FP Complete and Well Typed are both currently maintaining this library, and we are happy to have new people join the team
I'm excited to hear everyone's thoughts on this library, and look forward to seeing some awesome tools appear.
"If a function can't change anything in the world, how is it supposed to tell us what it calculated? In order to tell us what it calculated, it has to change the state of an output device (usually the state of the screen), which then emits photons that travel to our brain and change the state of our mind, man."submitted by hoogamaphone
[link] [5 comments]
The Next Stage of Staging, by Jun Inoue, Oleg Kiselyov, Yukiyoshi Kameyama:
This position paper argues for type-level metaprogramming, wherein types and type declarations are generated in addition to program terms. Term-level metaprogramming, which allows manipulating expressions only, has been extensively studied in the form of staging, which ensures static type safety with a clean semantics with hygiene (lexical scoping). However, the corresponding development is absent for type manipulation. We propose extensions to staging to cover ML-style module generation and show the possibilities they open up for type specialization and overhead-free parametrization of data types equipped with operations. We outline the challenges our proposed extensions pose for semantics and type safety, hence offering a starting point for a long-term program in the next stage of staging research. The key observation is that type declarations do not obey scoping rules as variables do, and that in metaprogramming, types are naturally prone to escaping the lexical environment in which they were declared. This sets next-stage staging apart from dependent types, whose benefits and implementation mechanisms overlap with our proposal, but which does not deal with type-declaration generation. Furthermore, it leads to an interesting connection between staging and the logic of definitions, adding to the study’s theoretical significance.
A position paper describing the next logical progression of staging to metaprogramming over types. Now with the true first-class modules of 1ML, perhaps there's a clearer way forward.
Capital Match (www.capital-match.com) is a Singapore-based peer-to-peer lending platform. We are backed by a number of VCs and banking industry leaders. We have started our operations at the beginning of 2015 and are steadily growing. Our online platform is already operational and we are now embarking on the next stage of tech development to be able to service large institutional investors. Our product enables SMEs to secure loans from professional investors. We are hiring a well-rounded full-stack software developer to join the team in Singapore.
We are looking for a software engineer interested in all aspects of the creation, growth and operations of a secure web-based platform: Front-end design and implementation, front-to-back features development, distributed deployment and automation in the cloud, build and test automation etc.
Experience in web-based software development is essential and minimum exposure to and understanding of XP practices (TDD, CI, Emergent Design, Refactoring, Peer review and programming, Continuous improvement) is expected. These are standard practices within the team. We therefore favour candidates who value simplicity and respect, accept and give feedback and who are generally team player.
Our team is distributed so ability to work comfortably in a distributed setting is essential. However, please note this position is to be filled in Singapore so if you are not currently living there, relocation is necessary in the short-term.
We offer a combination of salary and equity depending on experience and skills:
Salary: USD 3,000-6,000 / month
Equity: 0.1-1% (subject to vesting)
European citizens who relocate to Singapore do not have to pay their home country taxes and the local tax rate in Singapore is around 2-3% (effective on the proposed salary range). Visa sponsorship will be provided.
Singapore is a great place to live, a vibrant city rich with diverse cultures, a very strong financial sector and a central position in Southeast Asia.
Get information on how to apply for this position.