Send Beginners mailing list submissions to beginners@haskell.org To subscribe or unsubscribe via the World Wide Web, visit http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners or, via email, send a message with subject or body 'help' to beginners-requ...@haskell.org
You can reach the person managing the list at beginners-ow...@haskell.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Beginners digest..." Today's Topics: 1. Re: The (x:xs) in function parameter is a tuple? (Max Voit) 2. Re: general observation about programming (Dudley Brooks) 3. Folders and sub-folders (Mike Houghton) 4. Re: Folders and sub-folders (Imants Cekusins) 5. Re: general observation about programming (Jeffrey Brown) ---------------------------------------------------------------------- Message: 1 Date: Thu, 25 Feb 2016 16:14:05 +0100 From: Max Voit <max.voit+m...@with-eyes.net> To: beginners@haskell.org Subject: Re: [Haskell-beginners] The (x:xs) in function parameter is a tuple? Message-ID: <20160225161405.2a40a...@veeloqu.lan> Content-Type: text/plain; charset=US-ASCII On Thu, 25 Feb 2016 07:49:56 +0800 Nan Xiao <xiaonan830...@gmail.com> wrote: > Rein referred "A tuple can have any number of elements", while Graham > referred "There's no "one-ple", or 1-tuple, in Haskell.". So which one > is right? The tuple at least contains 2 elements? There is no one-tuple; however, there's a zero-tuple. Also no arbitrary number of tuple elements allowed, due to definition (we're at 61 for some reason). Refer to http://hackage.haskell.org/package/ghc-prim-0.4.0.0/docs/GHC-Tuple.html best, Max ------------------------------ Message: 2 Date: Thu, 25 Feb 2016 08:17:45 -0800 From: Dudley Brooks <dbro...@runforyourlife.org> To: beginners@haskell.org Subject: Re: [Haskell-beginners] general observation about programming Message-ID: <56cf2929.10...@runforyourlife.org> Content-Type: text/plain; charset="windows-1252"; Format="flowed" Ages and ages ago I saw this advice about programming: Q: "What's the best language for a programmer to know?" A: "English" (or whatever your native language is) -- Dudley On 2/24/16 4:03 PM, Dennis Raddle wrote: > This is more about programming in general than Haskell, although > Haskellers probably know it well. > > I don't claim to have expert knowledge on this, but I'm gradually > getting better at it. > > When I set out to write a program, or refactor a program, or modify a > program, it helps to set out my thinking in a clear way. And how I > make it clear is to document my thoughts. > > An outline is one good way to organize thoughts and is probably my > main tool. But good English prose is also helpful. > > The key factor is "editing." In what sense do I mean that? Good > writers do it, and the Haskell documentation does it. I mean (1) > brevity and (2) good flow. To achieve brevity, you must think about > the essence of each statement and trim away the unnecessary stuff. > Good flow refers to how the document builds up and modifies your > concepts as you read it. A document can actually mirror an effective > learning process, or influence and change your process. > > I work with my documentation, making several editing passes. By the > time I'm done, I am in a great position to write a concise and > flexible program. > > It's interesting that not only is Haskell a concise language, but the > Haskell library documentation is concise. Contrast that with the > Python documentation which often wanders about into areas that are > irrelevant--it could easily be cut into one third its present size. > > Mike > > > > > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20160225/f9d82223/attachment-0001.html> ------------------------------ Message: 3 Date: Thu, 25 Feb 2016 18:41:20 +0000 From: Mike Houghton <mike_k_hough...@yahoo.co.uk> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: [Haskell-beginners] Folders and sub-folders Message-ID: <95c6683e-a31f-4eac-8c7e-73fdb1f94...@yahoo.co.uk> Content-Type: text/plain; charset="utf-8" Hi, I?m trying to build up a list of all folders (including subfolders) from a given root folder. So I have folders :: FilePath -> IO [FilePath] folders fp = do all <- getDirectoryContents fp filterM doesDirectoryExist $ map (fp </>) all and this just gets the immediate folders within the given folder. I?m stuck on how to recursively call folders and build up the IO [FilePath] folders :: FilePath -> IO [FilePath] folders fp = do all <- getDirectoryContents fp -- z :: IO [FilePath] let z = filterM doesDirectoryExist $ map (fp </>) all ? z? :: [FilePath] z' <- z ? ?? what should happen here? z : (map folders z?) Couldn't match expected type ?[FilePath]? with actual type ?IO [FilePath]? In the first argument of ?(:)?, namely ?z? In a stmt of a 'do' block: z : (map folders z') etc... Thanks Mike -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20160225/5d9c88d2/attachment-0001.html> ------------------------------ Message: 4 Date: Thu, 25 Feb 2016 20:07:37 +0100 From: Imants Cekusins <ima...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] Folders and sub-folders Message-ID: <CAP1qinaB_Si=phqnyznqharvosr1k_rgesuf+c2etzebovj...@mail.gmail.com> Content-Type: text/plain; charset=UTF-8 Hello Mike, below code find all files recursively from a starting point. It works. You'd need to tweak it to find folders instead. import System.Directory import Data.List findAllFiles::FilePath -> IO [FilePath] findAllFiles base0 = gd1 base0 >>= \list1 -> concatMap' recurse3 list1 where gd1 d1 = filter f2 <$> (getDirectoryContents d1) f2 "." = False f2 ".." = False f2 _ = True recurse3 md3 = doesDirectoryExist md3full >>= \isDir3 -> if isDir3 then findAllFiles md3full else pure [md3full] where md3full = base0 ++ "/" ++ md3 concatMap':: (a -> IO [b]) -> [a] -> IO [b] concatMap' m0 list0 = sequence (m0 <$> list0) >>= \list2 -> pure $ concat list2 ------------------------------ Message: 5 Date: Thu, 25 Feb 2016 11:19:24 -0800 From: Jeffrey Brown <jeffbrown....@gmail.com> To: dbro...@runforyourlife.org, The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] general observation about programming Message-ID: <CAEc4Ma2DrT0=zMj0wCJPXrZLRJyVpRksexO=ig9krujvqwg...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Something I like about functional programming is how it interfaces with natural language. Haskell, somehow to a greater extent than other languages, encourages me to divide functions into one or two-liners. Each has a type signature that means something in English. Further, each gives you the opportunity to choose a good name for the function and its arguments. After doing those things, the function is much easier to write, and much easier to read -- so much so that often you don't have to read the function body at all, just the type signature, function name and argument names. On Thu, Feb 25, 2016 at 8:17 AM, Dudley Brooks <dbro...@runforyourlife.org> wrote: > Ages and ages ago I saw this advice about programming: > > Q: "What's the best language for a programmer to know?" > > A: "English" (or whatever your native language is) > > -- Dudley > > > On 2/24/16 4:03 PM, Dennis Raddle wrote: > > This is more about programming in general than Haskell, although > Haskellers probably know it well. > > I don't claim to have expert knowledge on this, but I'm gradually getting > better at it. > > When I set out to write a program, or refactor a program, or modify a > program, it helps to set out my thinking in a clear way. And how I make it > clear is to document my thoughts. > > An outline is one good way to organize thoughts and is probably my main > tool. But good English prose is also helpful. > > The key factor is "editing." In what sense do I mean that? Good writers do > it, and the Haskell documentation does it. I mean (1) brevity and (2) good > flow. To achieve brevity, you must think about the essence of each > statement and trim away the unnecessary stuff. Good flow refers to how the > document builds up and modifies your concepts as you read it. A document > can actually mirror an effective learning process, or influence and change > your process. > > I work with my documentation, making several editing passes. By the time > I'm done, I am in a great position to write a concise and flexible program. > > It's interesting that not only is Haskell a concise language, but the > Haskell library documentation is concise. Contrast that with the Python > documentation which often wanders about into areas that are irrelevant--it > could easily be cut into one third its present size. > > Mike > > > > > _______________________________________________ > Beginners mailing > listBeginners@haskell.orghttp://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > > > > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > > -- Jeffrey Benjamin Brown -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20160225/8a114450/attachment.html> ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 92, Issue 32 *****************************************