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? (Rein Henrichs)
   2. Re:  general observation about programming (Mike Pentney)
   3. Re:  Folders and sub-folders (Mike Houghton)


----------------------------------------------------------------------

Message: 1
Date: Thu, 25 Feb 2016 22:43:53 +0000
From: Rein Henrichs <rein.henri...@gmail.com>
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <beginners@haskell.org>
Subject: Re: [Haskell-beginners] The (x:xs) in function parameter is a
        tuple?
Message-ID:
        <cajp6g8yjdjdcazbrihjggbgs9gua85spdlg4akw3xx7plar...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Nan, generally speaking (e.g., in maths) tuples can contain any number of
elements. Haskell specifically disallows one-tuples because of the
ambiguity in parsing them. Instead, (expr) is just evaluated as expr. On
the other hand, it does allow (), which is a zero-tuple. Haskell's
compilers also impose an upper bound on the practical size of a tuple (for
modern GHC, that's 61, as Max mentioned) but that isn't a restriction of
the Haskell language itself. If you want, you can consider Identity a to be
a one-tuple, but it obviously doesn't use tuple syntax.

As a side note, a 1-tuple is occasionally called a monad in other
disciplines, while a monad is actually defined as a triple (a three-tuple)
in maths. None of that is relevant to Haskell though.

On Thu, Feb 25, 2016 at 7:14 AM Max Voit <max.voit+m...@with-eyes.net>
wrote:

> 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
> _______________________________________________
> 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/c36047d4/attachment-0001.html>

------------------------------

Message: 2
Date: Fri, 26 Feb 2016 09:55:22 +0000
From: Mike Pentney <mike.pent...@physics.org>
To: beginners@haskell.org
Subject: Re: [Haskell-beginners] general observation about programming
Message-ID: <56d0210a.30...@physics.org>
Content-Type: text/plain; charset=windows-1252; format=flowed

As a newbie, something I dislike about Haskell is the use of infix operators 
like <||> which are 
unpronouncable and therefore (if you don't happen to know the notation the 
symbol is based on) 
are more or less meaningless.

And Haskellers often seem to prefer 1 and 2 character variable names, which 
again convey little 
or no information.

And don't get me started on point-free code...!

N.B. I am not trying to start a flame war, these are just comments from my 
experience of trying 
to get beyond text-book examples and start using Haskell libraries and trying 
to learn from open 
source code. In general I find idiomatic Haskell hard to understand, and for me 
this is a 
barrier to using Haskell for real projects. Maybe someday I'll have learnt 
enough to get past 
this problem, but as the language and libraries seem to evolve quickly, I have 
my doubts...


On 25/02/16 19:19, Jeffrey Brown wrote:
> 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
> <mailto: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 list
>>     Beginners@haskell.org <mailto:Beginners@haskell.org>
>>     http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
>     _______________________________________________
>     Beginners mailing list
>     Beginners@haskell.org <mailto:Beginners@haskell.org>
>     http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
>
>
> --
> Jeffrey Benjamin Brown
>
>
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>


------------------------------

Message: 3
Date: Fri, 26 Feb 2016 10:42:07 +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: Re: [Haskell-beginners] Folders and sub-folders
Message-ID: <826550dc-d6c8-401e-8b53-a9d4d4781...@yahoo.co.uk>
Content-Type: text/plain; charset=us-ascii

Thanks.


I sweated it  bit more and got



isOk FilePath -> Bool
isOk  = not . isPrefixOf "."  

folders :: FilePath -> IO [FilePath]
folders fp  = do
    all <- getDirectoryContents fp
    z' <- filterM doesDirectoryExist $ map (fp </>) (filter isOk all)
    x' <- mapM (\x -> folders x) z'
    return $ z' ++ (concat x') ::

which seems to work.


> On 25 Feb 2016, at 19:07, Imants Cekusins <ima...@gmail.com> wrote:
> 
> 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
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners



------------------------------

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 33
*****************************************

Reply via email to