Cargando…

Beginning Haskell : a project-based approach /

Beginning Haskell provides a broad-based introduction to the Haskell language, its libraries and environment, and to the functional programming paradigm that is fast growing in importance in the software industry. The book takes a project-based approach to learning the language that is unified aroun...

Descripción completa

Detalles Bibliográficos
Clasificación:Libro Electrónico
Autor principal: Mena, Alejandro Serrano
Formato: Electrónico eBook
Idioma:Inglés
Publicado: [New York] : Apress, ©2014.
Colección:Expert's voice in programming.
Temas:
Acceso en línea:Texto completo (Requiere registro previo con correo institucional)

MARC

LEADER 00000cam a2200000Ia 4500
001 OR_ocn871683861
003 OCoLC
005 20231017213018.0
006 m o d
007 cr unu||||||||
008 140307s2014 nyua ob 001 0 eng d
040 |a UMI  |b eng  |e pn  |c UMI  |d GW5XE  |d B24X7  |d COO  |d YDXCP  |d IDEBK  |d DEBBG  |d E7B  |d CDX  |d DEBSZ  |d N$T  |d OCLCF  |d OCLCQ  |d YDX  |d OCLCO  |d Z5A  |d LIV  |d MERUC  |d OCLCQ  |d ESU  |d UWW  |d EBLCP  |d VT2  |d IOG  |d REB  |d UUM  |d CEF  |d INT  |d U3W  |d OCLCQ  |d WYU  |d YOU  |d UWO  |d OCLCQ  |d UAB  |d OCLCA  |d UKAHL  |d OCLCQ  |d BRF  |d OCLCO  |d OCLCQ  |d OCLCO 
019 |a 880827073  |a 906193111  |a 959587436  |a 961603829  |a 966358290  |a 1066497932  |a 1067204670 
020 |a 9781430262510  |q (electronic bk.) 
020 |a 1430262516  |q (electronic bk.) 
020 |z 9781430262503 
020 |z 1430262508 
024 7 |a 10.1007/978-1-4302-6251-0  |2 doi 
029 1 |a AU@  |b 000053308408 
029 1 |a AU@  |b 000061961944 
029 1 |a CHNEW  |b 000887662 
029 1 |a CHVBK  |b 374465797 
029 1 |a DEBBG  |b BV041792681 
029 1 |a DEBBG  |b BV042031756 
029 1 |a DEBBG  |b BV043609427 
029 1 |a DEBSZ  |b 407738606 
029 1 |a DEBSZ  |b 414172140 
029 1 |a AU@  |b 000067095902 
029 1 |a AU@  |b 000068987826 
035 |a (OCoLC)871683861  |z (OCoLC)880827073  |z (OCoLC)906193111  |z (OCoLC)959587436  |z (OCoLC)961603829  |z (OCoLC)966358290  |z (OCoLC)1066497932  |z (OCoLC)1067204670 
037 |a CL0500000395  |b Safari Books Online 
050 4 |a QA76.73.H37  |b M534 2014 
072 7 |a COM  |x 051010  |2 bisacsh 
072 7 |a COM  |x 051000  |2 bisacsh 
072 7 |a UMX  |2 bicssc 
072 7 |a UMC  |2 bicssc 
082 0 4 |a 005.13/3  |2 23 
049 |a UAMI 
100 1 |a Mena, Alejandro Serrano. 
245 1 0 |a Beginning Haskell :  |b a project-based approach /  |c Alejandro Serrano Mena. 
260 |a [New York] :  |b Apress,  |c ©2014. 
300 |a 1 online resource (1 volume) :  |b illustrations 
336 |a text  |b txt  |2 rdacontent 
337 |a computer  |b c  |2 rdamedia 
338 |a online resource  |b cr  |2 rdacarrier 
347 |a text file  |b PDF  |2 rda 
490 1 |a The expert's voice in programming 
588 0 |a Online resource; title from title page (Safari, viewed Feb. 19, 2014). 
500 |a Includes index. 
520 |a Beginning Haskell provides a broad-based introduction to the Haskell language, its libraries and environment, and to the functional programming paradigm that is fast growing in importance in the software industry. The book takes a project-based approach to learning the language that is unified around the building of a web-based storefront. Excellent coverage is given to the Haskell ecosystem and supporting tools. These include the Cabal build tool for managing projects and modules, the HUnit and QuickCheck tools for software testing, the Scotty framework for developing web applications, Persistent and Esqueleto for database access, and also parallel and distributed programming libraries. Functional programming is gathering momentum, allowing programmers to express themselves in a more concise way, reducing boilerplate and increasing the safety of code. Indeed, mainstream languages such as C♯ and Java are adopting features from functional programming, and from languages implementing that paradigm. Haskell is an elegant and noise-free pure functional language with a long history, having a huge number of library contributors and an active community. This makes Haskell the best tool for both learning and applying functional programming, and Beginning Haskell the perfect book to show off the language and what it can do. Takes you through a series of projects showing the different parts of the language. Provides an overview of the most important libraries and tools in the Haskell ecosystem. Teaches you how to apply functional patterns in real-world scenarios. 
504 |a Includes bibliographical references and index. 
505 0 |a At a Glance -- Contents -- About the Author -- About the Technical Reviewer -- Acknowledgments -- Introduction -- Part 1: First Steps -- Chapter 1: Going Functional -- Why Haskell? -- Why Pure Functional Programming? -- Why Strong Static Typing? -- The Haskell Ecosystem -- The History of Haskell -- Your Working Environment -- Installing on Windows -- Installing on Mac OS X -- Installing on Linux -- Installing on Linux from Source -- Checking That the Installation is Successful -- Installing EclipseFP -- First steps with GHCi -- The Time Machine Store -- Summary -- Chapter 2: Declaring the Data Model -- Working with Characters, Numbers, and Lists -- Characters -- Numbers -- Strings -- Lists -- Lists Operations -- Creating a New Project -- Creating a Project from the Command Line -- Creating a Project from EclipseFP -- Understanding Modules -- Defining Simple Functions -- Creating a Simple Function -- Specifying the Function's Type -- Developing a Robust Example -- Returning More than One Value -- Working with Data Types -- Pattern Matching -- Simple Patterns -- Lists and Tuples -- Guards -- View Patterns -- Records -- Creation and Use -- The "Default Values" Idiom -- Summary -- Chapter 3: Reusing Code Through Lists -- Parametric Polymorphism -- Functions as Parameters -- Higher-Order Functions -- Anonymous Functions -- Partial Application of a Function -- More on Modules -- Module Imports -- Smart Constructors and Views -- Diving into Lists -- Folds -- Lists and Predicates -- Lists Containing Tuples -- List Comprehensions -- Haskell Origami -- Summary -- Chapter 4: Using Containers and Type Classes -- Using Packages -- Managing Packages with Cabal and EclipseFP -- Sandboxed Environments -- Containers: Maps, Sets, Trees, Graphs -- Maps -- Sets -- Trees -- Graphs -- Obtaining Help -- Ad-hoc Polymorphism: Type Classes. 
505 8 |a Declaring Classes and Instances -- Built-in Type Classes -- Binary Tress for the Minimum Price -- Step 1: Simple Binary Trees -- Step 2: Polymorphic Binary Trees -- Step 3: Binary Trees with Monoidal Cache -- Container-related Type Classes -- Functors -- Foldables -- Summary -- Chapter 5: Laziness and Infinite Structures -- An Infinite Number of Time Machines -- Lazy Evaluation Model -- Understanding Evaluation in Haskell -- Problems with Laziness -- Pattern Matching and Laziness -- Profiling with GHC -- Strictness Annotations -- Summary -- Part 2: Data Mining -- Chapter 6: Knowing Your Clients Using Monads -- Data Mining -- Implementing K-means -- Lenses -- Discovering Monads -- Watching out for Incomplete Data -- Combinators for State -- Dissecting the Combinators -- do Notation -- Monad Laws -- Different Sorts of State -- State and Lenses -- Reader, Writer, and RWS -- Mutable References with ST -- Summary -- Chapter 7: More Monads: Now for Recommendations -- Returning More Than One Value -- The List Monad -- A New View Over Monads -- Failures and Alternatives -- Association Rules Learning. -- Flattening Values into Transactions -- The Apriori Algorithm -- Search Problems -- Paths in a Graph -- The Logic Monad -- Monads and Lists Redux -- Combining Values Under a Monad -- Monad Comprehensions -- Combining Monads -- Monad Transformers -- Monad Classes -- Summary -- Chapter 8: Working in Several Cores -- Parallelism, Concurrency, Distribution -- The Par Monad -- Futures -- Dataflow Parallelism with IVars -- Parallelizing the Apriori Algorithm -- Software Transactional Memory -- Concurrent Use of Resources -- Atomic Transactions -- Rolling Back Transactions -- Producer-Consumer Queues -- Cloud Haskell -- Looking for Galaxies -- Looking for Typed Galaxies -- Extra Features -- Summary -- Part 3: Resource Handling. 
505 8 |a Chapter 9: Dealing with Files: IO and Conduit -- Basic Input and Output -- Randomness -- Working with Files -- Reading and Writing -- Handling Files -- Error Handling -- Pure Errors -- Catching Exceptions -- Throwing Exceptions -- Streaming Data with Conduit -- Problems with Lazy Input/Output -- Introducing Conduits -- Accessing Files via Conduit -- Looking Further than Text Files -- Basic Networking -- Binary Serialization -- Summary -- Chapter 10: Building and Parsing Text -- The Five Textual Data Types -- Building as Fast as the Wind -- Parsing with attoparsec -- Introducing New Type Classes -- Applicative -- Functors, Applicatives, and Monads -- Alternative -- Traversable -- Don't Overengineer: Just Use JSON -- Summary -- Chapter 11: Safe Database Access -- Database Access Landscape -- Abstracting over Several DBMSs -- Introducing Persistent and Esqueleto -- Connection -- Schemas and Migrations -- Describing the Entities -- Creating the Database -- Queries -- Queries by Identifier or Uniqueness -- Selecting Several Entities -- SQL Queries with Esqueleto -- Insertions, Updates, and Deletions -- Summary -- Chapter 12: Web Applications -- Haskell Web Ecosystem -- Web Frameworks -- Compilation to Javascript -- RESTful Structure -- Backend with Scotty -- Simple Skeleton -- Showing Products from the Database -- Inserting New Products Using Forms -- Frontend with Fay -- Foreign Function Interface -- Fay and jQuery -- Summary -- Part 4: Domain Specific Languages -- Chapter 13: Strong Types for Describing Offers -- Domain Specific Languages -- Embedding Your Language in Haskell -- The Offers Language -- Adding Safety to the Expression Language -- Dependent Typing -- Introducing Idris -- Enforcing the Presents Rule in Idris -- Type-level Programming in Haskell -- Two Styles of Programming -- Representing Natural Numbers -- Functional Dependencies. 
505 8 |a Categories of Products with FDs -- Enforcing the Presents Rule with FDs -- Type Families -- Enforcing the Presents Rule with TFs -- Categories of Products with TFs -- Data Type Promotion and Singletons -- A Further Refinement to the Presents Rule -- Enforcing the Duration Rule -- Summary -- Chapter 14: Interpreting Offers with Attributes -- Interpretations and Attribute Grammars -- A Simple Interpretation -- Introducing Attribute Grammars -- Your First Attribute Grammar -- Synthesizing the Result -- Executing the Attribute Grammar -- Integrating UUAGC in Your Package -- Installing UUAGC -- UUAGC and Cabal -- Expressions Interpretation -- Using an Attribute Grammar -- Precomputing Some Values -- A Different (Monadic) View -- Offer Interpretations -- Checking the Presents Rule -- Showing a HTML Description -- Origami Programming Over Any Data Type -- Summary -- Part 5: Engineering the Store -- Chapter 15: Documenting, Testing, and Verifying -- Documenting Binary Trees with Haddock -- Unit Testing with HUnit -- Declaring Tests in Cabal -- Writing Unit Tests -- Randomized Testing with QuickCheck -- Testing List Properties -- Testing Binary Tree Properties -- Formal Verification with Idris -- Summary -- Chapter 16: Architecting Your Application -- Design Patterns and Functional Programming -- Medium-Level Guidelines -- Use Higher-Order Combinators -- Refactor -- Use Type Classes Wisely -- Enforce Invariants via the Type System -- Stay (as) Pure and Polymorphic (as Possible) -- Tools -- Project and Dependency Management -- Code Style -- Documentation -- Test and Verification -- Benchmarking -- Profiling -- Coverage -- Remote Monitoring -- Projects -- Data Mining Library -- Store Network Client -- Administration Interface and Tetris -- Roll Your Own Monad -- Summary -- APPENDIX A: Looking Further -- Haskell Resources -- Other Functional Languages. 
505 8 |a APPENDIX B: Time Traveling with Haskell -- Index. 
590 |a O'Reilly  |b O'Reilly Online Learning: Academic/Public Library Edition 
650 0 |a Haskell (Computer program language) 
650 0 |a Functional programming (Computer science) 
650 6 |a Haskell (Langage de programmation) 
650 6 |a Programmation fonctionnelle. 
650 7 |a COMPUTERS  |x Programming Languages  |x General.  |2 bisacsh 
650 7 |a COMPUTERS  |x Programming  |x General.  |2 bisacsh 
650 7 |a Functional programming (Computer science)  |2 fast 
650 7 |a Haskell (Computer program language)  |2 fast 
650 7 |a HASKELL  |2 gnd 
650 1 7 |a Haskell (programmeertaal)  |0 (NL-LeOCL)194972054  |2 gtt 
776 0 8 |i Print version:  |a Mena, Alejandro Serrano.  |t Beginning Haskell.  |d Berkeley : Apress, 2014  |z 1430262508  |w (DLC) 2014466576  |w (OCoLC)862346456 
830 0 |a Expert's voice in programming. 
856 4 0 |u https://learning.oreilly.com/library/view/~/9781430262503/?ar  |z Texto completo (Requiere registro previo con correo institucional) 
938 |a Askews and Holts Library Services  |b ASKH  |n AH29483067 
938 |a Books 24x7  |b B247  |n bks00062343 
938 |a Coutts Information Services  |b COUT  |n 28233650 
938 |a EBL - Ebook Library  |b EBLB  |n EBL1694197 
938 |a ebrary  |b EBRY  |n ebr10845461 
938 |a EBSCOhost  |b EBSC  |n 883349 
938 |a ProQuest MyiLibrary Digital eBook Collection  |b IDEB  |n cis28233650 
938 |a YBP Library Services  |b YANK  |n 11729238 
994 |a 92  |b IZTAP