News aggregator

Using haskell to determine if a function is tail recursive

Haskell on Reddit - Tue, 03/03/2015 - 5:59pm

I had an interesting idea, but I'm too much of a newbie to actually write it myself. I was wondering if there was a way to take in a function and determine if it's tail recursive. I feel like you'd have to do some really low level stuff to tell if the call is added to the stack or heap, but I don't know. Has anyone ever attempted this?

submitted by gin-writ
[link] [3 comments]
Categories: Incoming News

Functional Jobs: Full-Stack Senior Functional Web Engineer at Front Row Education (Full-time)

Planet Haskell - Tue, 03/03/2015 - 2:52pm

Senior full-stack functional web engineer to join fast-growing education startup that changes how over a million young students learn math.

TL;DR - Reasons to care about working with Front Row
  • Our mission is important to us, and we want it to be important to you as well: hundreds of thousands of kids learn math using Front Row every month. Our early results show students improve twice as much while using Front Row than their peers who aren’t using the program.
  • You’ll be one of the first engineers on the team, which means you’ll have an immense impact on our company, product, and culture; you’ll have a ton of autonomy; and you’ll have equity to match the weight of this role
  • A lot of flexibility: while we all work towards the same goals, you’ll have a lot of autonomy in what you work on, you can work from home up to one day a week, and we have a very flexible unlimited vacation days policy
  • You’ll use the most effective tools in the industry: Haskell, Postgres, Backbone.js, Ansible and more. Front Row is one of the very few organizations in the world that use Haskell in production for most of their systems and is an active member of the Haskell community.
  • In addition to doing good, we’re doing really well: in just over a year after launch, we are in more than 20% of all US elementary & middle schools.
The Business

Millions of teachers around the USA are struggling to help 30+ students in their class learn math because every student is in their own place. In a typical fourth grade classroom, there may be students learning to count, students learning to add, students learning to multiply, and students learning how exponents work - and one teacher somehow needs to address all these needs.

Front Row makes that impossible task possible, and as of today, more than a hundred thousand students use Front Row to receive personalized guidance in their learning. Thousands of teachers use Front Row every day to save hours of time and make sure their students are growing at the fastest rate achievable. Front Row active users have been growing over 25% a month for the past 6 months.

Front Row is successfully venture-funded and on the road to profitability.

The Role

As one of our very first engineers, you will be part of a team of developers who are passionate about their vocation, take pride in their craft and who push each other to grow as professionals. You will strive for pragmatism and 80/20 in your work. You will be using tools that make you most effective. By working really smart, you will produce more than the average developer ever will, but without the crazy hours.

We love generalists who can quickly bring themselves up to speed with any technology we’re using: you will have the chance to learn a lot, and fast too. You will receive continuous support and mentorship on your journey to achieving mastery. We do however expect you not to need to be hand-held and rely on others for your own growth. You will have full autonomy over your work.

You will work in an effective team that plans, executes and reflects together. Because we’re a small team, everything you create will go into production and be used by students. You will never do unimportant work: every contribution will make a clear and tangible impact on the company’s trajectory. Your personal success will be directly aligned with that of the company.

Most importantly, your work will have purpose: Front Row is a mission-driven company that takes pride in making a significant impact in the lives of hundreds of thousands of students.

  • Front Row is a polyglot combination of multiple web applications, mobile apps and asset generation tools.
  • Web front-ends are a custom version of Backbone.js + plugins.
  • The backend is a series of Haskell+Yesod-based applications talking to PostgreSQL and 3rd party services.
  • All test, build and deployment automation relies on Ansible. AWS for hosting.
  • We have mobile apps for both iOS and Android
  • Work is continuously happening to simplify and minimize the codebases.
Must haves
  • You have experience doing full-stack web development. You understand HTTP, networking, databases and the world of distributed systems.
  • You have functional programming experience.
  • Extreme hustle: you’ll be solving a lot of problems you haven’t faced before without the resources and the support of a giant organization. You must thrive on getting things done, whatever the cost.
  • You have familiarity with a functional stack (Haskell / Clojure / Scala / OCaml etc)
  • You're comfortable with the Behavior-Driven Development style
  • You have worked at a very small startup before: you thrive on having a lot of responsibility and little oversight
  • You have worked in small and effective Agile/XP teams before
  • You have delivered working software to large numbers of users before
  • You have familiarity with system and network administration
  • Competitive salary
  • Generous equity option grants
  • Medical, Dental, and Vision
  • Lunch is on us three times a week, and half-day event every month (trip to Sonoma, BBQ, etc)
  • Equipment budget
  • Flexible work schedule
  • Flexible, untracked vacation day policy
  • Working from downtown SF, very accessible location
Front Row - our mission

It's an unfortunate reality that students from less affluent families perform worse in school than students from wealthier families. Part of this reason has to do with home environment and absentee parents, but much of it has to do with inferior resources and less experienced teachers. The worst part of this problem is that if a student falls behind in any grade, they will forever be behind in every grade.

That's the core problem Front Row solves - it doesn't let students fall behind. And if they fall behind, Front Row helps catch them up really quickly because Front Row arms teachers with the resources and knowledge to develop their students individually. Now, the probability of falling behind in any given grade is irrelevant, because it will never compound. The student who would have been the most at risk will instead be up to speed, and therefore far more motivated.

Get information on how to apply for this position.

Categories: Offsite Blogs

DSLDI: 3rd Workshop on Domain-Specific Language Designand Implementation

General haskell list - Tue, 03/03/2015 - 2:02pm
********************************************************************* FIRST CALL FOR TALK PROPOSALS DSLDI 2015 Third Workshop on Domain-Specific Language Design and Implementation July 7, 2015 Prague, Czech Republic Co-located with ECOOP ********************************************************************* Deadline for talk proposals: 2nd of April, 2015 If designed and implemented well, domain-specific languages (DSLs) combine the best features of general-purpose programming languages (e.g., performance) with high productivity (e.g., ease of programming). *** Workshop Goal *** The goal of the DSLDI workshop is to bring together researchers and practitioners interested in sharing ideas on how DSLs should be designed, implemented, supported by tools, and applied in realistic application contexts. We are both interested in discovering how already known domains such as graph processing or machine learning can be best supported by DSLs, but also in exploring n
Categories: Incoming News

Lifting Writer to ListT

haskell-cafe - Tue, 03/03/2015 - 1:03pm
Hi all, Suppose I have this monad stack: type MyMonad = ListT (Writer W) Where ListT is done right (from the list-t package). What I want is a nondeterministic computation where each alternative logs to the same writer, and indeed the type of runWriter . toList is MyMonad a -> ([a], w) so I think I got it right. What I would like to do is to write an instance of MonadWriter for this monad, but I'm stuck with the implementation of listen. Just using lift won't work, and indeed I see that MonadWriter lifting instances for other monads (e.g MaybeT), are a bit convoluted. Could someone explain me a little bit what should I do (what listen should do in a ListT in the first place) Thank you :) Nicola
Categories: Offsite Discussion

Am I using Parsec correctly?

haskell-cafe - Tue, 03/03/2015 - 12:00pm
Categories: Offsite Discussion

Error -> Except migration

libraries list - Tue, 03/03/2015 - 9:32am
Hi, In recent versions of transformers, 'ErrorT' has been deprecated in favour of 'ExceptT': This doesn't seem like a trivial like-for-like replacement since the implementation of 'fail' is different - in ErrorT it produces an exception within the ErrorT itself, and in ExceptT it just calls fail in the underlying monad. Is there any guidance or simple trick to find if a program is relying on the old behaviour? Otherwise migrating could be rather painful/dangerous, particularly as tests often don't cover exceptional cases well. I've spent a while searching for past discussion of the change, but haven't found anything, so please do point me at anything relevant if this has already been discussed. Cheers, Ganesh
Categories: Offsite Discussion

Threepenny-gui: How to create an event that triggers when a computation completes

Haskell on Reddit - Tue, 03/03/2015 - 8:58am

I want to create a game where the user plays the computer. The computer runs an algorithm to compute it's next move which takes some time, so I need an event (and/or behavior) that lets me know when the algorithm is done running. Is this possible in three-penny gui?

submitted by martingalemeasure
[link] [3 comments]
Categories: Incoming News

Happy Haskell Programming - Tue, 03/03/2015 - 8:31am
Categories: Offsite Blogs

Happy Haskell Programming - Tue, 03/03/2015 - 8:31am
Categories: Offsite Blogs

Difficulty making a TH template for a monadicexpression

haskell-cafe - Tue, 03/03/2015 - 8:05am
I’m at wits end as to how to express a monadic expression in TH. I’ll give here two ways to express a non TH version, and then a TH expression that does not quite work. It generates code that compiles, but it does not evaluate properly like the non TH version. Fundamentally, the problem is use of a recursive function using quasi quoting similar to what is in the standard Show example. Perhaps someone will have an idea on how to fix it. I have made several attempts and failed. Non TH Example A: Do notation ————————————— let r = BG.runBitGet flags (do let bits = [] v <- BG.getBit bits <- return $ if v then I1_7:bits else bits v <- BG.getBit bits <- return $ if v then I1_6:bits else bits v <- BG.getBit bits <- return $ if v then I1_5:bits else bits v <- BG.getBit bits <- return $ if v then I1_4:bits else bits v <- BG.getBit bits <- return $ if v then I1_3:bits else bit
Categories: Offsite Discussion

Dimitri Sabadie: al was shipped

Planet Haskell - Tue, 03/03/2015 - 5:45am

al was shipped. It includes several improvements, among them:

  • fix CPU architecture issues ;
  • since version 0.1.1, the stdcall flag is available ;
  • alcIsExtensionSupported was renamed to alcIsExtensionPresent as the former just doesn’t exist – sorry for the typo.

The stdcall flag might be a great ally for people compiling on a 32-bit Windows. For people on 64-bit Windows, the default is sufficient – and for UNIX systems, you don’t have anything special to do.

I’m also looking for hackers to test the library on the most OS as possible. I have issues with it (see this) and I’d like to hear from people. Even though I have that issue, al compiles well and runs great in ghci, which is weird regarding the fact running an application compiled with al silently crashes at startup.

About paths…

That’s a nasty issue I don’t really know how to correctly fix. Up to now, default OpenAL 1.1 SDK installation are detected for Windows. For people with custom installation and other systems, you have to pass the path of the SDK by hand. I know, it’s a pain in the ass, but I don’t want to depend on tools like pkg-config as that tool is not available everywhere – getting it on Windows is not that simple.

Categories: Offsite Blogs

Philip Wadler: Philosophers

Planet Haskell - Tue, 03/03/2015 - 4:58am

This may come in handy next time I need to lecture on Russell's Paradox. From SMBC.
Categories: Offsite Blogs

FP Complete: Hiring: Systems Engineer

Planet Haskell - Tue, 03/03/2015 - 4:45am

FP Complete is a small, fast-growing software company focused on software development tools and data analysis/modeling tools. We are the leading provider of commercial development tools for the Haskell language, with advanced users in finance, applied science & medicine, and Internet/mobile services.

As a modern distributed company, we seek the best staff from anywhere and allow them to telecommute. Therefore this position is open to applicants from all locations, and relocation is not required. Work from home is encouraged.

We provide a positive, technology-driven environment for smart, focused, self-managing people who like working with bright colleagues and users on a wide variety of design and implementation tasks.

We are looking to expand our engineering team with an additional systems engineer. This position will focus on system administration, with many opportunities to grow skills into larger scale systems design and development tasks.

This is a full-time, long-term contract position.

Primary responsibility

The primary responsibility of this role will be administration of a regulated software project. We are looking for some who can demonstrate trustworthiness in operating a high-stakes, high-reliability service. This position will be process oriented, and will have a large focus on correctness of implementation. Responsibilities will include managing cluster computing solutions for large, domain-specific cloud compute jobs, as well as management of clusters of machines hosting high-availability applications and web services.

This position will offer the opportunity to work on the production deployment of a high-performance (HPC) scientific processing application. You would be working hand-in-hand with other engineers writing Haskell libraries for distributed workload across this cluster and web services.

Secondary responsibility

This position will offer additional side projects which allow for more creative implementations, many of which will be high visibility as part of Haskell community infrastructure. This includes working with developers to create well-hosted technology demonstrations and improving online resources for learning Haskell.

  • AWS (EC2, VPC, IAM, RDS, ElastiCache)
  • Ubuntu server
  • Experience with managing high-availability systems
  • Shell scripting and automation of routine tasks
  • Strong organizational skills
  • Experience hosting SaaS systems
Nice to have:
  • Azure or other IaaS
  • Postgres
  • Jenkins
  • Docker
  • CoreOS
  • Service Discovery and HA architectures
  • Intrusion detection/prevention
  • Backup/restore
  • MediaWiki management
  • Configuration management

Additionally, as we are a functional programming shop, we are most interested in candidates who are intrigued by functional programming, as functional programming is a strong part of our engineering team culture.

If you are interested in applying for this position, please send your CV or resume to

Categories: Offsite Blogs

C2HS parse error on Windows ...

haskell-cafe - Tue, 03/03/2015 - 2:13am
Hi all, c2hs runs into the following error on all of my .chs files, but only on Windows: c:\\program files\\haskell platform\\2014.2.0.0\\mingw\\bin\\../lib/gcc/x86_64-w64-mingw32/4.6.3/../../../../x86_64-w64-mingw32/include/stddef.h:20: (column 11) [ERROR] >>> Syntax error ! The symbol `__attribute__' does not fit here. My c2hs version is: C->Haskell Compiler, version 0.23.1 Snowbounder, 31 Oct 2014 build platform is "x86_64-mingw32" <1, True, True, 1> This is the command being run: "c:\Users\deech\AppData\Roaming\cabal\bin\c2hs.exe" "--cpp=c:\Program Files\Haskell Platform\2014.2.0.0\mingw\bin\gcc.exe" "--cppopts=-E" "--cppopts=-D__GLASGOW_HASKELL__=708" "--cppopts=-Dmingw32_BUILD_OS=1" "--cppopts=-Dx86_64_BUILD_ARCH=1" "--cppopts=-Dmingw32_HOST_OS=1" "--cppopts=-Dx86_64_HOST_ARCH=1" "--cppopts=-I./c-src" "--cppopts=-I./" "--cppopts=-IC:/MinGW/include" "--cppopts=-IC:\Users\deech\Downloads\fltkhs-" "--cppopts=-IC:\Users\deech\Downloads\fltkhs-"
Categories: Offsite Discussion