(마크 왓슨 2023)

EWW 로 로딩 한 뒤 번역하고 정보를 보면서 정리하면 좋다. https://leanpub.com/haskell-cookbook/read

Haskell Tutorial and Cookbook

About the Book

참고: 두 번째 버전은 2019년 8월 6일에 출시되었습니다. 첫 번째 버전을 구매한 독자에게는 무료 업그레이드가 제공됩니다. 이 책(및 내 모든 Leanpub 책)은 무료로 원할 경우 내 웹 사이트 https://markwatson.com/books/%EC%97%90%EC%84%9C%EB%8F%84 무료로 사용할 수 있습니다.

Functional programming is the paradigm that is replacing object oriented methodologies. The Haskell language has several advantages for functional programming: the language is mature, is supported by many libraries and development tools, and compiles to compact and efficient executable programs that can be "single file" deployed.

함수형 프로그래밍은 객체 지향 방법론을 대체하는 패러다임입니다. Haskell 언어는 함수형 프로그래밍에 있어 여러 장점을 갖고 있습니다. 언어가 성숙하고, 많은 라이브러리와 개발 도구에서 지원되며, "단일 파일" 배포가 가능한 컴팩트하고 효율적인 실행 프로그램으로 컴파일됩니다.

Haskell does have a steep learning curve in general but in this book I show you a small but effective subset of Haskell that will get you started quickly.

Haskell은 일반적으로 학습 곡선이 가파르지만 이 책에서는 여러분이 빠르게 시작할 수 있도록 작지만 효과적인 Haskell의 하위 집합을 보여줍니다.

This book also provides something for more experienced Haskell developers: new ideas for Haskell applications and example code that is likely to be useful for your own projects.

The first section of this book contains two chapters:

  • A tutorial on pure Haskell development: no side effects.

순수한 Haskell 개발에 대한 튜토리얼: 부작용이 없습니다.

  • A tutorial on impure Haskell development: dealing with the world (I/O, network access, database access, etc.)

불순한 하스켈 개발에 대한 튜토리얼: 세계 다루기(I/O, 네트워크 접근, 데이터베이스 접근 등)

After working through these tutorial chapters you will understand enough of Haskell development to understand and be able to modify for your own use the cookbook examples in the second section. Some of the general topics will be covered again in the second book section that contains longer sample applications. For example, you will learn the basics for interacting with Sqlite and Postgres databases in the tutorial on impure Haskell code but you will see a much longer example later in the book when I provide code for a Blackjack playing program.

이 튜토리얼 장을 다 읽고 나면 당신은 하스켈 개발에 대해 충분히 이해하게 될 것이며 두 번째 섹션의 요리책 예제를 자신이 사용하기 위해 수정할 수 있을 것입니다. 일반적인 주제 중 일부는 더 긴 샘플 애플리케이션이 포함된 두 번째 책 섹션에서 다시 다루게 됩니다. 예를 들어, 순수하지 않은 Haskell 코드에 대한 튜토리얼에서 Sqlite 및 Postgres 데이터베이스와 상호 작용하기 위한 기본 사항을 배우게 되지만 책 뒷부분에서 블랙잭 플레이 프로그램에 대한 코드를 제공할 때 훨씬 더 긴 예제를 보게 될 것입니다.

The second section of this book contains the following recipes implemented as complete programs:

이 책의 두 번째 섹션에는 완전한 프로그램으로 구현된 다음 레시피가 포함되어 있습니다.

  • Textprocessing CSV Files

  • Textprocessing JSON Files

  • Natural Language Processing (NLP) tools

  • Client and Server network programming examples

  • Access data on the Web using scraping and by querying Semantic Web RDF Data Sources

  • Annotating English text with Wikipedia/DBPedia URIs for entities in the original text. Entities can be people, places, organizations, etc.

  • Using sqlite and Postgres databases.

  • Play a simple form of the Blackjack card game.

  • The third section (added for the second edition) contains:

    • Automatic generation of Knowledge Graphs 지식 그래프 자동 생성
    • Hybrid Haskell + Python NLP examples

이 책을 포함한 모든 Leanpub 책은 내 웹사이트(https://markwatson.com/)에서 무료로 읽을 수 있습니다.

코드 리포

클론해서 가져옴

open-dired

Preface 서문

한번에 너무 많은 것을 배우려고 했기에 하스켈을 배우는데 1년 넘게 걸렸다고 한다. 순수한 코드와 불순한 코드를 나누어 접근하는 방식으로 배우는게 좋다.

  • Additional Material in the Second Edition 섹션 3에 프로젝트들을 추가. 아주 굉장히 중요한 이야기들이 있다.
  • Structure of the Book
  • Code Examples
  • Functional Programming Requires a Different Mind Set
  • eBooks Are Living Documents
  • Setting Up Your Development Environment
  • Why Haskell?
  • Enjoy Yourself

Section 1 튜토리얼 하스켈

Tutorial on Pure Haskell Programming

• Interactive GHCi Shell • Introduction to Haskell Types • Functions Are Pure • Using Parenthesis or the Special $ Character and Operator Precedence • Lazy Evaluation • Understanding List Comprehensions • Haskell Rules for Indenting Code • Understanding let and where • Conditional do Expressions and Anonymous Functions • Maps • Sets • More on Functions • Comments on Dealing With Immutable Data and How to Structure Programs • Error Handling • Testing Haskell Code • Pure Haskell Wrap Up

순수 하스켈 프로그래밍 튜토리얼.

/home/junghan/sync/code/haskell_tutorial_cookbook_examples/Pure/stack.yaml

resolver: lts-22.26

놀랍게도 LTS Haskell 22.26 (ghc-9.6.5) :: Stackage Server - stackage.org 최신 버전이었다.

아! :하스켈 가서 위를 커버하려면 hls 2.9.0 버전을 설치해야 했다. 바로 적용했다. 이제 바로 스텍이 적용 될 것이다.

Tutorial on Impure Haskell Programming

• Hello IO () Monad • A Note About >> and >>= Operators • Console IO Example with Stack Configuration • File IO • Error Handling in Impure Code • Network IO • A Haskell Game Loop that Maintains State Functionally • A More Detailed Look at Monads • Using Applicative Operators <$> and <*>: Finding Common Words in Files • List Comprehensions Using the do Notation • Dealing With Time • Using Debug.Trace • Wrap Up

Section 2 - Cookbook

Text Processing

• CSV Spreadsheet Files • JSON Data • Cleaning Natural Language Text

Natural Language Processing Tools

• Resolve Entities in Text to DBPedia URIs • Bag of Words Classification Model • Text Summarization • Part of Speech Tagging • Natural Language Processing Wrap Up

Linked Data and the Semantic Web

• The SPARQL Query Language • A Haskell HTTP Based SPARQL Client • Querying Remote SPARQL Endpoints • Linked Data and Semantic Web Wrap Up

Web Scraping

• Using the Wreq Library • Using the HandsomeSoup Library for Parsing HTML • Web Scraping Wrap Up

Using Relational Databases

• Database Access for Sqlite • Database Access for Postgres

Haskell Program to Play the Blackjack Card Game

Section 3 - Larger Projects

Knowledge Graph Creator

• Code Layout For the KGCreator Project and strategies for sharing Haskell code between projects • The Main Event: Detecting Entities in Text • Utility Code for Generating RDF • Utility Code for Generating Cypher Input Data for Neo4J • Top Level API Code for Handling Knowledge Graph Data Generation • Wrapup for Automating the Creation of Knowledge Graphs

Hybrid Haskell and Python Natural Language Processing

• Example Use of the Haskell NLP Client • Setting up the Python NLP Server • Understanding the Haskell NLP Client Code • Wrapup for Using the Python SpaCy NLP Service

Hybrid Haskell and Python For Coreference Resolution

• Installing the Python Coreference Server • Understanding the Haskell Coreference Client Code • Wrapup for Using the Python Coreference NLP Service

Book Wrap Up

Appendix A - Haskell Tools Setup

설정 둠이맥스 하라는대로 했다. 스택을 안쓸 생각이다.

CANCELLED stack

스택 설정하고 하고 설정.

data. You will want to create a file “~/.stack/config.yaml” with contents similar to my stack configuration file:

# This file contains default non-project-specific settings for Stack, used
# in all projects. For more information about Stack's configuration, see
# http://docs.haskellstack.org/en/stable/yaml_configuration/
 
# The following parameters are used by 'stack new' to automatically fill fields
# in the Cabal file. We recommend uncommenting them and filling them out if
# you intend to use 'stack new'.
# See https://docs.haskellstack.org/en/stable/yaml_configuration/#templates
templates:
  params:
   author-name: Junghan Kim
   author-email: junghanacs@gmail.com
   category: dev
   copyright: Copyright 2024 Junghanacs. All rights reserved
   github-username: junghan0611
 
# The following parameter specifies Stack's output styles; STYLES is a
# colon-delimited sequence of key=value, where 'key' is a style name and
# 'value' is a semicolon-delimited list of 'ANSI' SGR (Select Graphic
# Rendition) control codes (in decimal). Use 'stack ls stack-colors --basic'
# to see the current sequence.
# stack-colors: STYLES
install-ghc: false
system-ghc: true
 

stack install hlint

hlint 를 사용하는 습관. 스택을 이용해서 프로젝트를 만들어라.

CANCELLED Emacs Setup

저는 이 세 가지 대안을 모두 가끔씩 사용하지만, 하스켈 모드가 있는 Emacs가 제가 가장 좋아하는 환경입니다. 해스켈 모드 추가에 대한 지침은 프로젝트 홈페이지의 깃허브에 있습니다. 이 지침을 따르면 구문 하일라이팅을 할 수 있고 Emacs에서 하스켈 들여쓰기 규칙을 이해할 수 있습니다.

CANCELLED hlint

hlint is a wonderful tool for refining your knowledge and use of the Haskell language. After writing new code and checking that it works, then run hlint for suggestions on how to improve your code.

hlint는 하스켈 언어에 대한 지식과 사용법을 다듬을 수 있는 훌륭한 도구입니다. 새 코드를 작성하고 작동하는지 확인한 후 hlint를 실행하여 코드를 개선하는 방법에 대한 제안을 받아보세요.

$ stack install hlint

#keyword

#backlink

Related-Notes

References

마크 왓슨. 2023. 마크왓슨 AI 하스켈 프로그래밍. https://leanpub.com/haskell-cookbook/read.