Proposal: Export Data.Word.Word from Prelude
Johan Tibell
johan.tibell at gmail.com
Sat Aug 9 18:34:38 UTC 2014
+1
On Sat, Aug 9, 2014 at 8:27 PM, Carter Schonwald <carter.schonwald at gmail.com
> wrote:
> strong +1 from me!
>
>
> On Sat, Aug 9, 2014 at 7:38 AM, Herbert Valerio Riedel <hvr at gnu.org>
> wrote:
>
>> Hello *,
>>
>> Proposal
>> --------
>>
>> I hereby propose to export Haskell2010's Data.Word.Word type from the
>> Prelude
>>
>>
>> Motivation
>> ----------
>>
>> Starting with Haskell2010, "Data.Word" exporting the type 'Word', "an
>> unsigned integral type, with the same size as 'Int'" became part of the
>> Haskell Report.
>>
>> 'Word' is usually a better choice than 'Int' when non-negative
>> quantities (such as list lengths, bit or vector indices, or number of
>> items in a container) need to be represented. Currently however, 'Word'
>> is at a disadvantage (with respect to 'Int') in terms of public exposure
>> by being accessible only after an "import Data.Word".
>>
>> Moreover, since 'Word' is now part of the Haskell Report, libraries
>> should attempt to avoid name-clashing with 'Word' (and if they do, it
>> ought to be a conscious decision, which ought to be declared by a
>> requiring a "import Prelude hiding (Word)"). While one might think
>> 'Word' would be a popular type-name to use in Haskell code, the current
>> level of name collision is still rather low (as is shown in the next
>> section), so the cost would still be bearable at this point in my
>> opinion.
>>
>>
>> Due diligence (w.r.t. code breakage impact)
>> -------------------------------------------
>>
>> Packages depending on `haskell2010` or `haskell98` are not affected, and
>> neither would be those depending on `base` with a PVP-suggested upper
>> bound.
>>
>> However, to get a rough idea how widespread the use of 'Word' as a type
>> on Hackage currently is, here's a simple check for current uses of
>> 'Word' as a type-name performed with the simple heuristic search
>>
>> find -name '*.*hs*' -exec grep \
>> '\(data\|newtype\|type\)[[:space:]]\+Word[ =]' {} +
>>
>> over the unpacked source trees of the latest versions of the current
>> 6766 packages on Hackage resulted in the following 43 packages being
>> possibly affected (see specific source-code matches at end of email[1]):
>>
>> 1 adict-0.4.1
>> 2 boxes-0.1.3
>> 3 cjk-0.1.0.1
>> 4 clash-prelude-0.5.1
>> 5 combinat-0.2.5.0
>> 6 concraft-pl-0.7.1
>> 7 Craft3e-0.1.0.10
>> 8 crf-chain1-0.2.2
>> 9 crf-chain1-constrained-0.3.0
>> 10 crf-chain2-generic-0.3.0
>> 11 crf-chain2-tiers-0.2.1
>> 12 delta-h-0.0.3
>> 13 eros-0.6.0.0
>> 14 estimators-0.1.4
>> 15 estreps-0.3.1
>> 16 FermatsLastMargin-0.1
>> 17 fsmActions-0.4.4
>> 18 gf-3.6
>> 19 happraise-0.1
>> 20 HAppS-Data-0.9.3
>> 21 happstack-contrib-0.2.1
>> 22 hist-pl-fusion-0.5.3
>> 23 Holumbus-Searchengine-1.2.3
>> 24 integer-pure-1.0
>> 25 ixset-typed-0.3
>> 26 language-bash-0.6.0
>> 27 language-sh-0.0.3.1
>> 28 lhc-0.10
>> 29 MemoTrie-0.6.2
>> 30 mpppc-0.1.3
>> 31 nerf-0.5.2
>> 32 regex-deriv-0.0.4
>> 33 regex-pderiv-0.1.3
>> 34 regexpr-symbolic-0.5
>> 35 remote-0.1.1
>> 36 soyuz-0.0.0
>> 37 text-icu-0.6.3.7
>> 38 text-register-machine-0.4.0
>> 39 utf8-light-0.4.2
>> 40 WordNet-1.1.0
>> 41 WordNet-ghc74-0.1.3
>> 42 xhaskell-library-0.0.6
>> 43 york-lava-0.2
>>
>>
>> Discussion period
>> -----------------
>>
>> 2 weeks
>>
>>
>> Footnotes
>> ---------
>>
>> [1] More specifically, here's the output of the above mentioned `grep`
>> command:
>>
>> --8<---------------cut here---------------start------------->8---
>> adict-0.4.1/src/NLP/Adict/Core.hs:type Word a = V.Vector a
>> boxes-0.1.3/Text/PrettyPrint/Boxes.hs:data Word = Word { wLen :: Int,
>> getWord :: String }
>> cjk-0.1.0.1/CJK/Data/CEDICT.hs:data Word = Word {
>> clash-prelude-0.5.1/src/CLaSH/Tutorial.hs:type Word = Signed 4
>> combinat-0.2.5.0/Math/Combinat/FreeGroups.hs:type Word a = [Generator a]
>> concraft-pl-0.7.1/src/NLP/Concraft/Polish/Morphosyntax.hs:data Word = Word
>> Craft3e-0.1.0.10/Chapter7.hs:type Word = String
>> Craft3e-0.1.0.10/Index.hs:type Word = String
>> crf-chain1-0.2.2/Data/CRF/Chain1/Dataset/External.hs:type Word a = S.Set a
>> crf-chain1-constrained-0.3.0/src/Data/CRF/Chain1/Constrained/Dataset/External.hs:data
>> Word a b = Word
>> crf-chain2-generic-0.3.0/Data/CRF/Chain2/Generic/External.hs:data Word a
>> b = Word {
>> crf-chain2-tiers-0.2.1/src/Data/CRF/Chain2/Tiers/Dataset/External.hs:data
>> Word a b = Word {
>> delta-h-0.0.3/src/EvalSem.hs:type Word = String
>> eros-0.6.0.0/src/Text/Eros/Message.hs:type Word = L.Text
>> estimators-0.1.4/NLP/Probability/Example/Trigram.hs:newtype Word = Word
>> T.Text
>> estreps-0.3.1/src/Repeats.lhs:-- type Word = Int
>> FermatsLastMargin-0.1/FLM/WikiPages.hs: newtype Word = Word
>> String
>> fsmActions-0.4.4/Data/FsmActions.hs:newtype Word sy = Word [sy]
>> gf-3.6/lib/src/finnish/wordnet/FreqFin.hs:type Word = String
>> gf-3.6/treebanks/susanne/SusanneFormat.hs:type Word = String
>> gf-3.6/treebanks/talbanken/Format.hs:data Word = W {id :: Id, word
>> :: String, pos :: Tag}
>> happraise-0.1/Main.hs:type Word = String
>> HAppS-Data-0.9.3/src/HAppS/Data/Atom.hs: newtype Word = Word String
>> happstack-contrib-0.2.1/src/Happstack/Contrib/Atom.hs: newtype Word =
>> Word String
>> hist-pl-fusion-0.5.3/src/NLP/HistPL/Fusion.hs:type Word = T.Text
>> Holumbus-Searchengine-1.2.3/src/Holumbus/Index/Common/BasicTypes.hs:type
>> Word = String
>> integer-pure-1.0/Data/Integer.hs:type Word = Int -- We fake the
>> Word type, to avoid nasty conversions.
>> ixset-typed-0.3/src/Data/IxSet/Typed.hs: > newtype Word = Word String
>> language-bash-0.6.0/src/Language/Bash/Word.hs:type Word = [Span]
>> language-sh-0.0.3.1/Language/Sh/Syntax.hs:type Word = [Lexeme]
>> lhc-0.10/lib/base/src/Data/Word.hs:type Word = Word32
>> lhc-0.10/lib/base/src/GHC/Word.hs:data Word = W# Word# deriving (Eq, Ord)
>> MemoTrie-0.6.2/src/Data/MemoTrie.hs:-- newtype Word :->: a = WordTrie
>> ([Bool] :->: a)
>> mpppc-0.1.3/src/Text/PrettyPrint/MPPPC/TwoDim/Combinators/Flow.hs:data
>> Word s t = Printable s t =>
>> nerf-0.5.2/src/NLP/Nerf/Types.hs:type Word = T.Text
>> regex-deriv-0.0.4/Text/Regex/Deriv/ByteString/BitCode.hs:type Word =
>> S.ByteString
>> regex-deriv-0.0.4/Text/Regex/Deriv/ByteString/Posix.lhs:> type Word =
>> S.ByteString
>> regex-pderiv-0.1.3/Text/Regex/PDeriv/ByteString/LeftToRight.lhs:> type
>> Word = S.ByteString
>> regex-pderiv-0.1.3/Text/Regex/PDeriv/ByteString/LeftToRightD.lhs:> type
>> Word = S.ByteString
>> regex-pderiv-0.1.3/Text/Regex/PDeriv/ByteString/Posix.lhs:> type Word =
>> S.ByteString
>> regex-pderiv-0.1.3/Text/Regex/PDeriv/ByteString/RightToLeft.lhs:> type
>> Word = S.ByteString
>> regex-pderiv-0.1.3/Text/Regex/PDeriv/ByteString/TwoPasses.lhs:> type Word
>> = S.ByteString
>> regex-pderiv-0.1.3/Text/Regex/PDeriv/String/LeftToRightD.lhs:> type Word
>> = String
>> regexpr-symbolic-0.5/RegExpr/RegExprOperations.lhs:> type Word a = [a]
>> remote-0.1.1/examples/tests/Test-MapReduce.hs:type Word = String
>> remote-0.1.1/examples/kmeans/KMeans3.hs:type Word = String
>> soyuz-0.0.0/DCPU16/Instructions.hs:data Word
>> text-icu-0.6.3.7/Data/Text/ICU/Break.hsc:data Word = Uncategorized
>> -- ^ A \"word\" that does not fit into another
>> text-register-machine-0.4.0/Language/TRM/Base.hs:newtype Word = W
>> [Letter] deriving (Eq, Monoid)
>> utf8-light-0.4.2/src/Codec/Binary/UTF8/Light.hs:data Word = W# Word#
>> WordNet-1.1.0/NLP/WordNet/Types.hs:type Word = String
>> WordNet-ghc74-0.1.3/NLP/WordNet/Types.hs:type Word = String
>> xhaskell-library-0.0.6/Text/Regex/PDeriv/ByteString/LeftToRight.lhs:>
>> type Word = S.ByteString
>> xhaskell-library-0.0.6/Text/Regex/PDeriv/ByteString/Posix.lhs:> type Word
>> = S.ByteString
>> xhaskell-library-0.0.6/Text/Regex/PDeriv/ByteString/RightToLeft.lhs:>
>> type Word = S.ByteString
>> xhaskell-library-0.0.6/Text/Regex/PDeriv/ByteString/TwoPasses.lhs:> type
>> Word = S.ByteString
>> york-lava-0.2/modules/Lava/Prelude.hs:type Word n = Vec n Bit
>> --8<---------------cut here---------------end--------------->8---
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://www.haskell.org/mailman/listinfo/libraries
>>
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140809/eccff995/attachment-0001.html>
More information about the Libraries
mailing list