I do a lot of exploratory coding in GHCi, and as such, I'm tinkering with a script to persist definitions across GHCi sessions and reloads like so:*> :sr narp = putStrLn "Narp!" *> :do m <- return "Ok" *> narp Narp! *> m "Ok" *> :q ...>ghci *> :ls *> narp Narp! *> m "Ok"
... and I've run into a snag. If I use :sr to define a function which does not type check, I still persist it. Now, I do have a :dl command to delete the last definition persisted with :sr, but that is subject to human error. Is there any fairly simple trick I'm overlooking that would let me catch this automatically?
Alternatively, is there something that already does this so I don't have to?submitted by WarDaft
[link] [4 comments]
The question is in the title. I know that with the reducers, I can transformgetSum $ mconcat (map Sum xs)
to something like getSum $ reduce?? xs
or??? getSum xs
But it always take me half an hour to figure out which import to do and which function to call. This package seems great though.
In the example I gave, it doesn't look really usefull, but it is when you reducing tuples and could do thing like(getSum a, getSum b, getMax c) = reduce??? [(1,2,3), (4,5,6)] submitted by maxigit
[link] [2 comments]
Even after years of programming in Haskell, I always get hung up on this when implementing Applicative or Apply for some type.
Is it this way because of historic reason, is there a benefit to the former representation (performance?), or is it purely arbitrary?submitted by srijs
[link] [21 comments]
(Spinning off from this post on g+)
So givendata Proxy (t :: k) = Proxy proxify :: forall c. (forall a. c a => a -> String) -> Proxy c proxify _ = Proxy
GHC-7.8.2 can confirm my type inferences for applications of proxify:λ :t proxify show :: Proxy Show proxify show :: Proxy Show :: Proxy Show λ :t proxify id :: Proxy ((~) String) proxify id :: Proxy ((~) String) :: Proxy ((~) String)
But can't make those predictions itself:λ :t proxify show <interactive>:1:9: Could not deduce (Show a) arising from a use of ‘show’ from the context (c a) ... λ :t proxify id <interactive>:1:9: Could not deduce (a ~ String) from the context (c a) ...
My problem isn't that GHC can't do it (maybe GHC-7.10 can), so much as I don't even know how to describe this kind of type inference.submitted by rampion
[link] [8 comments]
Problem: I think everyone guessed from the title, but maybe my language is bad and ambiguous. Well, for example you use :browse Data.List and found dropWhile which sounds like what you need, but there is also dropWhileEnd with same type. To see difference you open hoogle, search by name, search in list, read the docs. There should be something faster, like command line tool and something smart enough to get documentation for current entity. Example: python's "help" function. My search of solution was difficult, because there is a lot of noise: people recommend to use type information and hoogle instead of documentation, but it is addition to documentation - not replacement.
- As far as I discovered - there is the ticket for haddock documentation in ghci https://ghc.haskell.org/trac/ghc/ticket/2168 - it is sounds nice but it is 8 years old. 10 month ago was posted two nice comments and priority changed to normal, but it means nothing. Is there any published plans about .hi metadata?
- hoogle. Well, it is nice cli search tool, can I somehow specify package, open item in browser?
- dash, zeal. I am found two tools ( https://github.com/jfeltz/dash-haskell/ and https://github.com/philopon/haddocset ) for generating docsets from cabal (second tool using stack) packages. Zeal have command line util, so may be used from ghci. Also zeal may specify package. I'm not tried yet, but it is very close to that I want and still can't be used with loaded entities - only manual typing.
- Haddock have api!. Which used in two tools above. And also in leksah (someone using lesah? any documentation support for entity under cursor?).
What I want to know:
- anyone has a better solution? (any solution)
- anyone want a better solution?
- is it possible to solve the problem? I am planning to spend some time for it. But as far as I can see there is no any interest or it is very hard (more then 8 years) task.
Probably developer of solution need to get current modules loaded in ghci and pass to haddock api and get entity by name.submitted by vlastachu
[link] [3 comments]
I need a graph library in Haskell which, given node-labelled graphs G and H, can check if G can be embedded into H. We can assume that the graphs have the same set of node labels. Can anyone make any suggestion, or am I rolling an extension?submitted by KozRoss
[link] [1 comment]
What's you favourite GHC language extension and what do you like about it (e.g. removing boiler plate code, extending the type system etc.)?submitted by MyFunc
[link] [36 comments]
I have this code :doDepositAccount :: [Account] -> IO [Account] doDepositAccount accounts = do putStrLn "On which account to do want to deposit?" accountNameToDeposit <- getLine let newAccounts = depositAccount accountNameToDeposit accounts return newAccounts depositAccount :: String -> [Account] -> [Account] depositAccount s accts = acctsAfter where maybeIndex = findIndex (isAccount s) accts acctsAfter = case maybeIndex of Nothing -> accts Just idx -> accts
Now I want to ask a user to enter another thing and update a value nl the right part of the accounts array.
Is this possibe and how do I achieve this ?submitted by wobbenr
[link] [2 comments]