Send Beginners mailing list submissions to
[email protected]
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
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."
Today's Topics:
1. Usage of type (Pietro Grandinetti)
2. Re: Usage of type (Francesco Ariis)
----------------------------------------------------------------------
Message: 1
Date: Tue, 8 Dec 2020 16:23:35 +0000
From: Pietro Grandinetti <[email protected]>
To: "[email protected]" <[email protected]>
Subject: [Haskell-beginners] Usage of type
Message-ID:
<pr2pr09mb30034ba17ecddf462d19f82efc...@pr2pr09mb3003.eurprd09.prod.outlook.com>
Content-Type: text/plain; charset="iso-8859-1"
Hi,
Playing around with code (very few lines) that represents long-form articles.
I'd like to understand:
1- if the usage of `type' is correct, or if I should prefer `newtype', or
something different altogheter.
2- what's the more idiomatic way to do the boxing and unboxing of renamed
types? See last 2 functions in the code.
import Data.Time (Day)
import Data.List (intercalate)
import Data.List.Split (splitOn)
type Title = String
type Author = String
type Sentence = String
type Paragraph = [Sentence]
type Abstract = Paragraph
type Content = [Paragraph]
type Date = Day
data Essay = Essay {
title :: Title
, authors :: [Author]
, pubDate :: Date
, startDate :: Date
, abstract :: Abstract
, content :: Content
} deriving (Show)
makeTitle :: String -> Title
makeTitle x = x::Title
makePar :: String -> Paragraph
makePar = splitOn sep
where sep = "."
makeContent :: String -> Content
makeContent x = map makePar $ splitOn sep x
where sep = "\n\n"
unboxPar :: Paragraph -> String
unboxPar = intercalate ". "
unboxContent :: Content -> String
unboxContent x = intercalate "\n\n" $ map unboxPar x
Thanks,
Pete
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20201208/b0b49695/attachment-0001.html>
------------------------------
Message: 2
Date: Tue, 8 Dec 2020 19:42:30 +0100
From: Francesco Ariis <[email protected]>
To: [email protected]
Subject: Re: [Haskell-beginners] Usage of type
Message-ID: <20201208184230.GE2781@extensa>
Content-Type: text/plain; charset=utf-8
Hello Pietro,
Il 08 dicembre 2020 alle 16:23 Pietro Grandinetti ha scritto:
> Hi,
>
> Playing around with code (very few lines) that represents long-form articles.
> I'd like to understand:
> 1- if the usage of `type' is correct, or if I should prefer `newtype', or
> something different altogheter.
Your usage of `type` is correct. The idea is that you start with type
and can easily switch to newtype if the need arises (typeclass reasons,
etc.).
> 2- what's the more idiomatic way to do the boxing and unboxing of renamed
> types? See last 2 functions in the code.
>
> […]
>
> import Data.Time (Day)
> import Data.List (intercalate)
> import Data.List.Split (splitOn)
>
> type Sentence = String
> type Paragraph = [Sentence]
> type Content = [Paragraph]
>
> unboxPar :: Paragraph -> String
> unboxPar = intercalate ". "
>
> unboxContent :: Content -> String
> unboxContent x = intercalate "\n\n" $ map unboxPar x
unboxPar and unboxContent are fine, I would personally name them slightly
differently (`renderPar` and `renderContent`).
—F
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 149, Issue 3
*****************************************