Search Results

Search found 7902 results on 317 pages for 'haskell platform'.

Page 8/317 | < Previous Page | 4 5 6 7 8 9 10 11 12 13 14 15  | Next Page >

  • Haskell typeclass

    - by Geoff
    I have a Haskell typeclass question. I can't munge the syntax to get this (seemingly reasonable) program to compile under GHC. import Control.Concurrent.MVar blah1 :: [a] -> IO ([a]) blah1 = return blah2 :: [a] -> IO (MVar [a]) blah2 = newMVar class Blah b where blah :: [a] -> IO (b a) instance Blah [] where blah = blah1 -- BOOM instance Blah (MVar []) where blah = blah2 main :: IO () main = do putStrLn "Ok" I get the following error message, which kind of makes sense, but I don't know how to fix it: `[]' is not applied to enough type arguments Expected kind `*', but `[]' has kind `* -> *' In the type `MVar []' In the instance declaration for `Blah (MVar [])'

    Read the article

  • Haskell: type inference and function composition

    - by Pillsy
    This question was inspired by this answer to another question, indicating that you can remove every occurrence of an element from a list using a function defined as: removeall = filter . (/=) Working it out with pencil and paper from the types of filter, (/=) and (.), the function has a type of removeall :: (Eq a) => a -> [a] -> [a] which is exactly what you'd expect based on its contract. However, with GHCi 6.6, I get gchi> :t removeall removeall :: Integer -> [Integer] -> [Integer] unless I specify the type explicitly (in which case it works fine). Why is Haskell inferring such a specific type for the function?

    Read the article

  • Haskell simple compilation bug

    - by fmsf
    I'm trying to run this code: let coins = [50, 25, 10, 5, 2,1] let candidate = 11 calculate :: [Int] calculate = [ calculate (x+candidate) | x <- coins, x > candidate] I've read some tutorials, and it worked out ok. I'm trying to solve some small problems to give-me a feel of the language. But I'm stuck at this. test.hs:3:0: parse error (possibly incorrect indentation) Can anyone tell me why? I've started with haskell today so please go easy on the explanations. I've tried to run it like: runghc test.hs ghc test.hs but with: ghci < test.hs it gives this one: <interactive>:1:10: parse error on input `=' Thanks

    Read the article

  • Invoke Haskell function with heterogeneous arguments?

    - by thurn
    I'm currently working on a Haskell project which automatically tests some functions based on an XML specification. The XML specification gives the arguments to each function and the expected result that the function will provide (the arguments are of many different types). I know how to extract the function arguments from the XML and parse them using the read function, but I haven't figured out how to invoke the function using the arguments I get out. What I basically want is to read and store the arguments in a heterogeneous list (my current thinking is to use a list of type Data.Dynamic) and then invoke the function, passing this heterogeneous list as its argument list. Is this possible? Modifying the functions under test is not an option.

    Read the article

  • Haskell FlatMap

    - by mvid
    I am a beginner interested in Haskell, and I have been trying to implement the flatmap (=) on my own to better understand it. Currently I have flatmap :: (t -> a) -> [t] -> [a] flatmap _ [] = [] flatmap f (x:xs) = f x : flatmap f xs which implements the "map" part but not the "flat". Most of the modifications I make result in the disheartening and fairly informationless Occurs check: cannot construct the infinite type: a = [a] When generalising the type(s) for `flatmap' error. What am I missing?

    Read the article

  • Haskell IO Passes to Another Function

    - by peterwkc
    This question here is related to http://stackoverflow.com/questions/3066956/haskell-input-return-tuple I wonder how we can passes the input from monad IO to another function in order to do some computation. Actually what i want is something like -- First Example test = savefile investinput -- Second Example maxinvest :: a maxinvest = liftM maximuminvest maxinvestinput maxinvestinput :: IO() maxinvestinput = do str <- readFile "C:\\Invest.txt" let cont = words str let mytuple = converttuple cont let myint = getint mytuple putStrLn "" -- Convert to Tuple converttuple :: [String] -> [(String, Integer)] converttuple [] = [] converttuple (x:y:z) = (x, read y):converttuple z -- Get Integer getint :: [(String, Integer)] -> [Integer] getint [] = [] getint (x:xs) = snd (x) : getint xs -- Search Maximum Invest maximuminvest :: (Ord a) => [a] -> a maximuminvest [] = error "Empty Invest Amount List" maximuminvest [x] = x maximuminvest (x:xs) | x > maxTail = x | otherwise = maxTail where maxTail = maximuminvest xs In the second example, the maxinvestinput is read from file and convert the data to the type maximuminvest expected. Please help. Thanks.

    Read the article

  • Haskell Syntax: Parse Error On Input

    - by NuNu
    As part of a mini-haskell compiler that I'm writing, I have a function named app. What I want this function to do is take in these arguments epp (App e1 e2). The first step would be to evaluate e1 recursively (epp e1) and check if the output would be an error. If not then evaluate e2 and then call another function eppVals to evaluate the outputs of the calls on e1 and e2 which I defined as v1 and v2 respectively. epp (App e1 e2) | epp e1 /= Error = eppVals v1 v2 | otherwise = Error where v1 = epp e1 v2 = epp e2 <- parse error on input `=' Logically I believe what I have written so far works but I'm getting a parse error on input = where I stated above. Any idea why? My second try epp :: Exp -> Error Val epp (App e1 e2) = (eppVals v1 v2) where v1 = (epp e1) v2 = (epp e2) But now throws Couldn't match expected type Val with actual type Error Val

    Read the article

  • Improve a haskell script

    - by Hector Villalobos
    I'm a newbie in Haskell and I'd like some opinions about improving this script. This is a code generator and requires a command line argument to generate the sql script. ./GenCode "people name:string age:integer" Code: import Data.List import System.Environment (getArgs) create_table :: String -> String create_table str = "CREATE TABLE " ++ h (words str) where h (x:xs) = let cab = x final = xs in x ++ "( " ++ create_fields xs ++ ")" create_fields (x:xs) = takeWhile (/=':') x ++ type x ++ sig where sig | length xs > 0 = "," ++ create_fields xs | otherwise = " " ++ create_fields xs create_fields [] = "" type x | isInfixOf "string" x = " CHARACTER VARYING" | isInfixOf "integer" x = " INTEGER" | isInfixOf "date" x = " DATE" | isInfixOf "serial" x = " SERIAL" | otherwise = "" main = mainWith where mainWith = do args <- getArgs case args of [] -> putStrLn $ "You need one argument" (x:xs) -> putStrLn $ (create_table x)

    Read the article

  • Splitting lists inside list haskell

    - by user3713267
    Hi I need to split list by an argument in Haskell. I found function like this group :: Int -> [a] -> [[a]] group _ [] = [] group n l | n > 0 = (take n l) : (group n (drop n l)) | otherwise = error "Negative n" But what if lists that I want to divide are contained by another list? For example group 3 [[1,2,3,4,5,6],[2,4,6,8,10,12]] should return [[[1,2,3],[4,5,6]],[[2,4,6],[8,10,12]]] Is there any way to do that ?

    Read the article

  • How to extract terms of specific data constructor from a list in Haskell

    - by finnsson
    A common problem I got in Haskell is to extract all terms in a list belonging to a specific data constructor and I'm wondering if there are any better ways than the way I'm doing it at the moment. Let's say you got data Foo = Bar | Goo , the list foos = [Bar, Goo, Bar, Bar, Goo] and wish to extract all Goos from foos. At the moment I usually do something like goos = [Goo | Goo <- foos] and all is well. The problem is when Goo got a bunch of fields and I'm forced to write something like goos = [Goo a b c d e f | Goo a b c d e f <- foos] which is far from ideal. How you do usually handle this problem?

    Read the article

  • Parallel Haskell in order to find the divisors of a huge number

    - by Dragno
    I have written the following program using Parallel Haskell to find the divisors of 1 billion. import Control.Parallel parfindDivisors :: Integer->[Integer] parfindDivisors n = f1 `par` (f2 `par` (f1 ++ f2)) where f1=filter g [1..(quot n 4)] f2=filter g [(quot n 4)+1..(quot n 2)] g z = n `rem` z == 0 main = print (parfindDivisors 1000000000) I've compiled the program with ghc -rtsopts -threaded findDivisors.hs and I run it with: findDivisors.exe +RTS -s -N2 -RTS I have found a 50% speedup compared to the simple version which is this: findDivisors :: Integer->[Integer] findDivisors n = filter g [1..(quot n 2)] where g z = n `rem` z == 0 My processor is a dual core 2 duo from Intel. I was wondering if there can be any improvement in above code. Because in the statistics that program prints says: Parallel GC work balance: 1.01 (16940708 / 16772868, ideal 2) and SPARKS: 2 (1 converted, 0 overflowed, 0 dud, 0 GC'd, 1 fizzled) What are these converted , overflowed , dud, GC'd, fizzled and how can help to improve the time.

    Read the article

  • simple putStrLn in Haskell/Yampa with arrows syntax

    - by sisif
    i'm using Haskell with the Yampa FRP library which uses the arrows language extension. how can i do a simple putStrLn in a SF? mySF = proc x -> do y <- identity -< x*x putStrLn "Hello World!" ++ show y returnA -< y the arrow syntax complains about the expression not bein an arrow (of course), but even with arrows i get no output output <- identity -< putStrLn "Hello World!"

    Read the article

  • Haskell - mapping the odd placed values and the even placed values differently

    - by Abstract
    Hey guys, is there an easy way. To take a list of numbers, say 123456. Then multiply the odd placed by three and the even placed by 1. i.e. (1 * 3) + (2 * 1) + (3 * 3) + (4*1) + (5*3) + (6*1) i was thinking the map function somewhere along the lines. But i don't know how to map *3 to just the odd placed values. Oh and if you could give me the version not in prelude that would be great like the actual function or functions, as if its being imported from an external haskell file Thanks for the help

    Read the article

  • Haskell: reading multiple command line arguments

    - by Survot
    Hi all, Okay, so I am making a program in Haskell that needs to change certain words based on two command line arguments. I have made the replace function and everything works great, but I am stumped getting it to work with command line arguments. Here is the main code: (replace function not included) main = do text <- getContents (command1:command2:_) <- getArgs putStrLn (replace (read command1) (read command2) text) So for intstance in the terminal I want to be able to type something like: "--- cat textfile.txt | ./replace oldword newword" I know this code is close since I have seen others do it this way. O_o Thanks for any help

    Read the article

  • list permutations in haskell

    - by turingcomplete
    So I'm new to haskell and I've been playing with it for a while now. I want to get my function that outputs all list permutations to work. I have written 2 implementations, one works well, the other is giving me an error. Any help would be awesome. This is the first (working) implementation: permute [] = [[]] permute xs = [y| x <- xs, y <- map (x:) $ permute $ delete x xs] This one is giving me an error: permute [] = [[]] permute xs = map (\x -> map (x:) $ permute $ delete x xs) xs and here's the error message: Occurs check: cannot construct the infinite type: t0 = [t0] Expected type: [t0] Actual type: [[t0]] In the expression: map (x :) $ permute $ delete x xs In the first argument of `map', namely `(\ x -> map (x :) $ permute $ delete x xs)' I'd appreciate if someone could explain why I'm getting this error. Thanks

    Read the article

  • problems with Haskell's Number Types

    - by mindeavor.
    I have the following haskell code: fac n = product [1..n] taylor3s w0 f f' f'' t h = w1 : taylor3s w1 f f' f'' (t+h) h where hp i = h^i / fac i w1 = w0 + (hp 1) * f t w0 + (hp 2) * f' t w0 + (hp 3) * f'' t w0 taylor_results = take 4 $ taylor3s 1 f f' f'' 1 0.25 where f t x = t^4 - 4*x/t f' t x = 4*t^3 - 4*(f t x)/t + 4*x/t^2 f'' t x = 12*t^2 - 4*(f' t x)/t + 8*(f t x)/t^2 - 8*x/t^3 taylor_results is supposed to be a use case of taylor3s. However, there is something wrong with the number type inferencing. When I try to compile, this is the error I get: practice.hs:93:26: Ambiguous type variable `a' in the constraints: `Integral a' arising from a use of `taylor3s' at practice.hs:93:26-51 `Fractional a' arising from a use of `f' at practice.hs:93:37 Possible cause: the monomorphism restriction applied to the following: taylor_results :: [a] (bound at practice.hs:93:0) Probable fix: give these definition(s) an explicit type signature or use -XNoMonomorphismRestriction Can someone help me with understanding what the problem is?

    Read the article

  • Haskell, list of natural number

    - by Hellnar
    Hello, I am an absolute newbie in Haskell yet trying to understand how it works. I want to write my own lazy list of integers such as [1,2,3,4,5...]. For list of ones I have written ones = 1 : ones and when tried, works fine: *Main> take 10 ones [1,1,1,1,1,1,1,1,1,1] How can I do the same for increasing integers ? I have tried this but it indeed fails: int = 1 : head[ int + 1] And after that how can I make a method that multiplies two streams? such as: mulstream s1 s2 = head[s1] * head[s2] : mulstream [tail s1] [tail s2]

    Read the article

  • Haskell UI framework?

    - by Lance May
    Is there, by chance, and emerging Haskell UI framework for Windows? I recently took up looking over the language, and from what I see, it would be great little "one-off" applications (elaborate scripts). However, without a good UI framework I can't see it getting in under the smoke and mirrors of the more obvious contenders. I've read that there are many frameworks, but none are full-featured. I'm just wondering if this is something that's on the rise, or is it simply too difficult to get enough developers going in the same direction with one?

    Read the article

  • Haskell: foldl' accumulator parameter

    - by Clinton
    I've been asking a few questions about strictness, but I think I've missed the mark before. Hopefully this is more precise. Lets say we have: n = 1000000 f z = foldl' (\(x1, x2) y -> (x1 + y, y - x2)) z [1..n] Without changing f, what should I set z = ... So that f z does not overflow the stack? (i.e. runs in constant space regardless of the size of n) Its okay if the answer requires GHC extensions. My first thought is to define: g (a1, a2) = (!a1, !a2) and then z = g (0, 0) But I don't think g is valid Haskell.

    Read the article

  • dealing with IO vs pure code in haskell

    - by Drakosha
    I'm writing a shell script (my 1st non-example in haskell) which is supposed to list a directory, get every file size, do some string manipulation (pure code) and then rename some files. I'm not sure what i'm doing wrong, so 2 questions: How should i arrange the code in such program? I have a specific issue, i get the following error, what am i doing wrong? error: Couldn't match expected type [FilePath]' against inferred typeIO [FilePath]' In the second argument of mapM', namelyfileNames' In a stmt of a 'do' expression: files <- (mapM getFileNameAndSize fileNames) In the expression: do { fileNames <- getDirectoryContents; files <- (mapM getFileNameAndSize fileNames); sortBy cmpFilesBySize files } code: getFileNameAndSize fname = do (fname, (withFile fname ReadMode hFileSize)) getFilesWithSizes = do fileNames <- getDirectoryContents files <- (mapM getFileNameAndSize fileNames) sortBy cmpFilesBySize files

    Read the article

  • Couldn't match expected type - Haskell Code

    - by wvyar
    I'm trying to learn Haskell, but the small bit of sample code I tried to write is running into a fairly large amount of "Couldn't match expected type" errors. Can anyone give me some guidance as to what I'm doing wrong/how I should go about this? These are the errors, but I'm not really sure how I should be writing my code. toDoSchedulerSimple.hs:6:14: Couldn't match expected type `[t0]' with actual type `IO String' In the return type of a call of `readFile' In a stmt of a 'do' block: f <- readFile inFile In the expression: do { f <- readFile inFile; lines f } toDoSchedulerSimple.hs:27:9: Couldn't match expected type `[a0]' with actual type `IO ()' In the return type of a call of `putStr' In a stmt of a 'do' block: putStr "Enter task name: " In the expression: do { putStr "Enter task name: "; task <- getLine; return inFileArray : task } toDoSchedulerSimple.hs:34:9: Couldn't match expected type `IO ()' with actual type `[a0]' In a stmt of a 'do' block: putStrLn "Your task is: " ++ (inFileArray !! i) In the expression: do { i <- randomRIO (0, (length inFileArray - 1)); putStrLn "Your task is: " ++ (inFileArray !! i) } In an equation for `getTask': getTask inFileArray = do { i <- randomRIO (0, (length inFileArray - 1)); putStrLn "Your task is: " ++ (inFileArray !! i) } toDoSchedulerSimple.hs:41:9: Couldn't match expected type `[a0]' with actual type `IO ()' In the return type of a call of `putStr' In a stmt of a 'do' block: putStr "Enter the task you would like to end: " In the expression: do { putStr "Enter the task you would like to end: "; task <- getLine; filter (endTaskCheck task) inFileArray } toDoSchedulerSimple.hs:60:53: Couldn't match expected type `IO ()' with actual type `[String] -> IO ()' In a stmt of a 'do' block: schedulerSimpleMain In the expression: do { (getTask inFileArray); schedulerSimpleMain } In a case alternative: "get-task" -> do { (getTask inFileArray); schedulerSimpleMain } This is the code itself. I think it's fairly straightforward, but the idea is to run a loop, take input, and perform actions based off of it by calling other functions. import System.Random (randomRIO) import Data.List (lines) initializeFile :: [char] -> [String] initializeFile inFile = do f <- readFile inFile let parsedFile = lines f return parsedFile displayHelp :: IO() displayHelp = do putStrLn "Welcome to To Do Scheduler Simple, written in Haskell." putStrLn "Here are some commands you might find useful:" putStrLn " 'help' : Display this menu." putStrLn " 'quit' : Exit the program." putStrLn " 'new-task' : Create a new task." putStrLn " 'get-task' : Randomly select a task." putStrLn " 'end-task' : Mark a task as finished." putStrLn " 'view-tasks' : View all of your tasks." quit :: IO() quit = do putStrLn "We're very sad to see you go...:(" putStrLn "Come back soon!" createTask :: [String] -> [String] createTask inFileArray = do putStr "Enter task name: " task <- getLine return inFileArray:task getTask :: [String] -> IO() getTask inFileArray = do i <- randomRIO (0, (length inFileArray - 1)) putStrLn "Your task is: " ++ (inFileArray !! i) endTaskCheck :: String -> String -> Bool endTaskCheck str1 str2 = str1 /= str2 endTask :: [String] -> [String] endTask inFileArray = do putStr "Enter the task you would like to end: " task <- getLine return filter (endTaskCheck task) inFileArray viewTasks :: [String] -> IO() viewTasks inFileArray = case inFileArray of [] -> do putStrLn "\nEnd of tasks." _ -> do putStrLn (head inFileArray) viewTasks (tail inFileArray) schedulerSimpleMain :: [String] -> IO() schedulerSimpleMain inFileArray = do putStr "SchedulerSimple> " input <- getLine case input of "help" -> displayHelp "quit" -> quit "new-task" -> schedulerSimpleMain (createTask inFileArray) "get-task" -> do (getTask inFileArray); schedulerSimpleMain "end-task" -> schedulerSimpleMain (endTask inFileArray) "view-tasks" -> do (viewTasks inFileArray); schedulerSimpleMain _ -> do putStrLn "Invalid input."; schedulerSimpleMain main :: IO() main = do putStr "What is the name of the schedule? " sName <- getLine schedulerSimpleMain (initializeFile sName) Thanks, and apologies if this isn't the correct place to be asking such a question.

    Read the article

  • Haskell Weird Kinds

    - by SHiNKiROU
    When I was experimenting with Haskell kinds, and trying to get the kind of ->, and this showed up: $ ghci ... Prelude> :k (->) (->) :: ?? -> ? -> * Prelude> Instead of the expected * -> * -> *. What are the ?? and ? things? Do they mean concrete types or "kind variables"? Or something else?

    Read the article

  • Haskell graph data type representation

    - by John Retallack
    I want to represent a graph in Haskell in the following manner: For each node I want to store it's value and a list of adjacent nodes,the problem which i'm having difficulties with is that I want the adjacent nodes to be stored as references to other nodes. For example: I want node ny to be stored as („NY“ (l p)) where l and p are adjacent nodes,and not as („NY“ („London“ „Paris“)). I tried something like this : data Node a = Node { value :: a , neighbors :: [Node a] }deriving (Show) let n1 = Node {value=1, neighbors=[n2]} let n2 = Node {value=1, neighbors=[n1 n3]} let n3 = Node {value=1, neighbors=[n2]} But i get en error in let,What am I doing wrong ?

    Read the article

  • Haskell - generating all paths between nodes

    - by user1460863
    I need to build a function, which return all paths between certain nodes. connect :: Int -> Int-> [[(Int,Int)]] Data.Graph library gives me usefull function 'buildG' which builds graph for me. If I call let g = buildG (1,5) [(1,2),(2,3),(3,4),(4,5),(2,5)], I will get an array where every node is mapped to his neighbours. An example: g!1 = [2] g!2 = [3,5] .. g!5 = [] I was trying to do it using list comprehensions, but I am not very good in haskell and I am getting typing error which I can't repair. connect x y g | x == y = [] | otherwise = [(x,z) | z <- (g!x), connect z y g] I don't need to worry at this moment about cycles. Here is what I want to get: connect 1 5 g = [[(1,2),(2,3),(3,4),(4,5)],[(1,2),(2,5)]]

    Read the article

  • Function Composition in Haskell

    - by Watts
    I have a function that takes 3 functions and switches the types and combine to make a new function. For example a test case call would be : (chain init tail reverse ) "Haskell!" the output should be lleksa I've tried to do this problem a few different ways including using the map function but I kept getting association problems. so i did chain :: Ord a => [a] -> a chain f g h x = f.g.h$x my error is Couldn't match expected type[t0->t1->t2->a0] When I type the problem directly into prelude like replacing f, g, h, x with the values it comes out right Is there even a way to do three functions, I've only seen two in examples

    Read the article

< Previous Page | 4 5 6 7 8 9 10 11 12 13 14 15  | Next Page >