News aggregator

stack + hdevtools -- together at last!

Haskell on Reddit - Thu, 07/02/2015 - 10:35pm

hdevtools previously had an issue where it wouldn't work with stack databases. There is a pull request currently that lets hdevtools work with stack projects.

I've tested it against all of my own Haskell projects and it works. If you'd like to give it a shot, please post your experience!

  1. Clone the repository here
  2. stack build && stack install
  3. Test hdevtools with your stack enabled projects
submitted by ephrion
[link] [39 comments]
Categories: Incoming News

Haskell/GHC garbage collection

Haskell on Reddit - Thu, 07/02/2015 - 4:20pm

How different is the garbage collector of a language like Haskell compared to the one of a language like Java. Objects in Haskell are typically immutable and IDless. Programmers have a much more restricted control over objects, which, I guess, is translated to easier job for the GC. I was looking at the eventlog of my program in ThreadScope and realized that the GC, in some cases, stops the other threads in order to cleanup the memory. Why does GC actually need to stop the world if all the objects are immutable?

submitted by gtab62
[link] [7 comments]
Categories: Incoming News

Can someone explain: What's the Haskell equivalent of a typical, stateful OO class?

Haskell on Reddit - Thu, 07/02/2015 - 1:30pm

From my indoctrination years ago, OO is the solution to the problem in C where we'd have:

  1. Lots of data structures such as arrays of arrays and other items, and
  2. functions which would operate on them.

The purported problem (probably true) was that the data wasn't capable of "protecting itself" from incorrect use. Additionally, lots of bad uncompartmentalized design resulted. E.g., no encapsulation. Nevertheless, in better designed C-based systems, highly defined function interfaces are the rule, I believe.

This has carried forward to today where frameworks like Ruby on Rails makes use of Models. These;

  1. keep all the data related to an entity,
  2. restrict access to their data,
  3. know how to validate their own state,
  4. are the locus of business logic for that entity, and
  5. manage their persistence.

The foundations for these features seem to be (1) message sending and (2) ability to create new 1st-class types. One sends a message to an object, and it "does the right thing" for itself and its data.

Finally, my question: What are the Haskell/Snap/Yesod solutions and equalivalents? Concretely, instead of having a programmer-written OO Class Restaurant which responds appropriately to the .latest_inspection message, how would this be designed in a Haskell system?

(Yes, I'm writing apps and libraries for publishing restaurant inspections. :-)

submitted by dogweather
[link] [50 comments]
Categories: Incoming News

Python style ternary 'if' in Haskell

Haskell on Reddit - Thu, 07/02/2015 - 12:10pm

I was just playing around when I realised I could do this

infixl 2 if' if' :: a -> Bool -> Maybe a if' a True = Just a if' _ False = Nothing infixr 1 else' else' :: Maybe a -> a -> a else' = flip fromMaybe

This lets you do stuff like

a `if'` test `else'` b a `if'` test `else'` b `if'` test' `else'` c

if' is a useful function on its own.

Yes, it looks pretty ugly with all the quotes and backticks, and the functions could benefit from better names or being operators, but its pretty cool. Thought I'd share.

submitted by 0v3rk1ll
[link] [22 comments]
Categories: Incoming News

Using cabal and stack together

Haskell on Reddit - Thu, 07/02/2015 - 11:47am

From Greg Weber's blog post on stack - - "The good news is that you can build a project with both cabal and stack and the two tools will not conflict."

I've been trying to figure out a clean way of doing that without any success. Tools like ghc-mod only work with cabal and I would like to be able to use them with stack.

My initial assumption was that I can simply get cabal to use the stack package databases by passing --package-db=clear --package-db=<stack snapshot db> --package-db=<stack local db> to cabal configure, but cabal is still not able to find the dependencies already installed by stack.

Is there a clean documented way to achieve this?

submitted by haskman
[link] [9 comments]
Categories: Incoming News

ANNOUNCE: SubHask-0.1

haskell-cafe - Wed, 07/01/2015 - 5:49pm
SubHask is an alternative prelude for programming in subcategories of Hask. The documentation includes examples on: * the category of polynomials * how to give set a monad instance in two different categories * basic linear algebra using the category of linear functions More information at: I'd like to emphasize that SubHask still has a number of bugs that need to be fixed. This release should be seen as just a technology preview.
Categories: Offsite Discussion

Deadline extension: ICFP 2015 Student Research Competition

General haskell list - Wed, 07/01/2015 - 3:12pm
====================================================================== DEADLINE EXTENSION New deadline: 6th July 2015 CALL FOR SUBMISSIONS SRC< at >ICFP 2015 Vancouver, Canada 31 August - 2 September 2015 Co-located with the International Conference on Functional Programming (ICFP 2015) ====================================================================== *** The deadline has been extended by a week! We particularly encourage submissions from undergraduates: none had been received in this category by the original deadline. Note that there is some funding available (up to $500), see the ACM website at *** Student Research Competition ---------------------------- This year ICFP will host a Student Research Competition where undergraduat
Categories: Incoming News

A datatype with a single constructor and forall to multiple constructors without forall

haskell-cafe - Wed, 07/01/2015 - 3:10pm
Hi, Occassionally, in (*good*) haskell libraries, I came across data types that are defined with a single constructor and a forall. For instance, Iteratee[0] is defined as below *newtype Iteratee s m a =* * Iteratee {runIter :: forall r. (a -> Stream s -> m r) -> ((Stream s -> Iteratee s m a) -> Maybe SomeException -> m r) -> m r}* I *think* it is equivalent to the following. But am not sure. *data Iteratee s m a = IOne (m (a , Stream s))* * | ITwo (Stream s -> m (Iteratee s m a)) (Maybe SomeException)* Can some one please explain what are the advantages of using the forall version? Does it significantly improve performance because it is newtype? Or does it help in reasoning about code (in some proof tools or such)? And can some one kindly point me to some references that help me convert from one form to another reliably? Many Thanks, Hemanth _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe< at >
Categories: Offsite Discussion

Small Crash-Course for Haskell

Haskell on Reddit - Wed, 07/01/2015 - 11:55am

Hey all,

About a year ago a few friends of mind were interested in learning Haskell, so I put together a few blog posts to serve as a "crash-course". I've only now gotten around to putting them online, but they cover the basics of syntax, using cabal, typeclasses and Prelude typeclasses, and some of the more abstract ones as well. These won't really be great for everyone since I wrote them with a few specific people in mind, but perhaps someone will enjoy them!

Intro to Haskell Syntax

Intro to Cabal/Gloss



Finger Trees -- this one is an older one, maybe even has been on this sub before.

If you find any errors (logical or formatting), please let me know!

submitted by NiftyIon
[link] [10 comments]
Categories: Incoming News

Use verbs or adjectives/properties to name functions?

Haskell on Reddit - Wed, 07/01/2015 - 9:51am

Considering Haskell uses call-by-need evaluation, you are never really applying a function to anything. All your code describes what things are and not how they are computed.

For example,

map :: (a -> b) -> [a] -> [b] map _ [] = [] map f (x:xs) = f x : map f xs

The name "map" acts like a verb, as if the code were "mapping" the function over a list. But, actually, the code is just describing how a new list of "b" can be produced out of a list of "a" and a function "a -> b". Would a name like "mappedBy" make more sense?

mappedBy :: [a] -> (a -> b) -> [b] [] `mappedBy` _ = [] (x:xs) `mappedBy` f = f x : xs `mappedBy` f

I see Haskell library uses verbs and adjectives (or "properties") to name functions. There is no standard or "correct" way to name stuff?

Other examples:

insert :: Ord a => a -> [a] -> [a] -- verb style insert x xs = ... with :: Ord a => [a] -> a -> [a] -- adjective/property style xs `with` x = ... length :: [a] -> Int -- adjective/property style length xs = ... getLength :: [a] -> Int -- verb style getLength xs = ... sort :: Ord a => [a] -> [a] -- verb style sort xs = ... sorted :: Ord a => [a] -> [a] -- adjective/property style sorted xs = ... sortBy :: (a -> a -> Ordering) -> [a] -> [a] -- verb style sortBy f xs = ... sortedBy :: [a] -> (a -> a -> Ordering) -> [a] -- adjective/property style xs `sortedBy` f = ... on :: (b -> b -> c) -> (a -> b) -> a -> a -> c -- adjective/property style f `on` g = ... applyBeforeAndThen :: (a -> b) -> (b -> b -> c) -> a -> a -> c -- verb style applyBeforeAndThen g f = ... submitted by evohunz
[link] [8 comments]
Categories: Incoming News

Mark Jason Dominus: The annoying boxes puzzle

Planet Haskell - Wed, 07/01/2015 - 9:13am
Here is a logic puzzle. I will present the solution on Friday.

There are two boxes on a table, one red and one green. One contains a treasure. The red box is labelled "exactly one of the labels is true". The green box is labelled "the treasure is in this box."

Can you figure out which box contains the treasure?

The treasure is in the red box
The treasure is in the green box
There is not enough information to determine the answer
Something else:
Starting on 2015-07-03, the solution will be here.
Categories: Offsite Blogs

Why does `sort` in Data.Discrimination claim to be O(n)?

Haskell on Reddit - Wed, 07/01/2015 - 9:04am

The documentation for Data.Discrimination has:

sort :: Sorting a => [a] -> [a] O(n). Sort a list using discrimination.

What's the trick?

submitted by clrnd
[link] [19 comments]
Categories: Incoming News

Container or Nix configuration with latest and greatest GHC, emacs, and emacs packages?

Haskell on Reddit - Wed, 07/01/2015 - 8:31am

Hey guys,

I'll get to the point. I use emacs. I use this guide to set up emacs. Things had been working pretty seamlessly for the past few months. Then they stopped working so great. I started getting weird errors. Whereas it used to look like this now it looks like this.

I don't want to have to mess with this. I've contemplated just uninstalling everything, reinstalling haskell-platform, recompiling GHC, reinstalling emacs, downloading all of the emacs packages, etc.

Problem: I don't want to have to do this shit every time emacs messes up on my 3 different devices I work on.

Solution: I'm going to write a bash/python script that does all of it for me.

Question: Has this already been solved? Is there like, a container or Nix config file that does all of this for me already? It would be great if so.

submitted by socratesthefoolish
[link] [4 comments]
Categories: Incoming News