• Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
    Haskell
  • Created over 11 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Drill to study recursive programming in Haskell

再帰ドリル

再帰を学ぶためのドリルです。使用するプログラミング言語は Haskell。

  1. 自然数に対する素朴な再帰 (演習1)
  2. 自然数に対する末尾再帰 (演習2)
  3. いろいろな終わり方 (演習3)
  4. 再帰的な自然数 (演習4)
  5. 自然数に対する少し複雑な再帰 (演習5)
  6. 再帰のこころ (演習6)
  7. メモ化 (演習7)
  8. リストに対する素朴な再帰 (演習8)
  9. リストを生成する再帰 (演習9)
  10. ループを超えた再帰 (演習10)
  11. 二分探索木(探索と挿入) (演習11)
  12. 二分探索木(走査と削除) (演習12)
  13. おわりに

演習に取り組む前に、まずレポジトリを clone して下さい。

% git clone https://github.com/kazu-yamamoto/recursion-drill.git

演習は exercise ディレクトリにあります。

% cd recursion-drill/exercise

cabal を使っている方

テストに利用している hspec ライブラリを以下のようにしてインストールして下さい。

% cabal update
% cabal install hspec

演習は、"数字.hs" というファイル中の undefined を変更することで解いていきましょう。ある部分ができたと思ったら、テストして動作を確認して下さい。たとえば、"1.hs" を書き換えた後は、以下のようにしてテストできます。

% runghc 1.hs

テストの結果は、成功は緑で、失敗は赤で表示されます。すべてが緑になるまで頑張りましょう。答えは answer というディレクトリにあります。考える前に答えを見てはいけません。

stack を使っている方

テストに利用している hspec ライブラリを以下のようにしてインストールして下さい。

% stack setup
% stack install hspec

演習は、"数字.hs" というファイル中の undefined を変更することで解いていきましょう。ある部分ができたと思ったら、テストして動作を確認して下さい。たとえば、"1.hs" を書き換えた後は、以下のようにしてテストできます。

% stack runghc 1.hs

テストの結果は、成功は緑で、失敗は赤で表示されます。すべてが緑になるまで頑張りましょう。答えは answer というディレクトリにあります。考える前に答えを見てはいけません。

More Repositories

1

Mew

Messaging in the Emacs World
Emacs Lisp
191
star
2

unit-test-example

Unit test example for Haskell
Haskell
173
star
3

pgpdump

A PGP packet visualizer
C
171
star
4

logger

A fast logging system for Haskell
Haskell
157
star
5

mighttpd2

File/CGI web server on Warp
Haskell
136
star
6

Firemacs

An extension to add Emacs's editing features to Firefox
JavaScript
107
star
7

quic

IETF QUIC library in Haskell
Haskell
88
star
8

http2

HTTP/2.0 library including HPACK
Haskell
84
star
9

hhp

Happy Haskell Programming
Haskell
67
star
10

dns

DNS libary in Haskell
Haskell
64
star
11

http3

HTTP/3 library in Haskell
Haskell
61
star
12

llrbtree

Left-leaning red-black trees
Haskell
48
star
13

iproute

IP Routing Table in Haskell
Haskell
47
star
14

mighttpd

A simple but practical HTTP server in Haskell. 'mighttpd' should be called 'mighty'.
Haskell
42
star
15

cab

A maintenance command of Haskell cabal packages
Haskell
36
star
16

h3spec

Test tool for error cases of QUIC and HTTP/3
Haskell
28
star
17

dnsext

Extensible DNS libraries written purely in Haskell
Haskell
19
star
18

wai-app-file-cgi

File/CGI App of WAI
Haskell
19
star
19

unix-time

Fast time library
C
19
star
20

witty

A web server to show bottlenecks of GHC
Haskell
15
star
21

simple-sendfile

Cross platform library for the sendfile system call
Haskell
15
star
22

c10k

Network server library to handle over 10,000 connections in Haskell
Haskell
13
star
23

monad

A book on Monad of Haskell in Japanese
Haskell
11
star
24

easy-file

Cross-platform File handling for Unix/Mac/Windows
Haskell
10
star
25

appar

A simple applicative parser in Parsec style
Haskell
10
star
26

hash-tree

Merkle Hash Tree in Haskell
Haskell
10
star
27

network-run

Simple network runner library in Haskell
Haskell
10
star
28

Goby

Goby is a WYSIWYG presentation tool, which runs on Emacs 22 or later
Emacs Lisp
9
star
29

bst

Binary search tree based on a logarithmic method
Haskell
8
star
30

http-date

Fast parser and formatter for HTTP Date
Haskell
8
star
31

concurrent-dns-cache

Concurrent DNS cache in Haskell
Haskell
8
star
32

domain-auth

Domain authentication library in Haskell
Haskell
7
star
33

io-choice

Choice for IO and lifted IO
Haskell
7
star
34

piki

Yet another Wiki format converter
Haskell
6
star
35

git-object

Git object and its parser
Haskell
6
star
36

test-framework-th-prime

Template Haskell for test framework
Haskell
6
star
37

webserver

A simple but practical library of HTTP server in Haskell
Haskell
5
star
38

parsec3

Haskell parsec3 library
Haskell
5
star
39

rpf

Receiver's Policy Framework
Haskell
5
star
40

SKI

Emulator of the SKI combinator system
Haskell
5
star
41

hs-sympo-2012

Our paper to Haskell Symposium 2012
Haskell
5
star
42

wttree

Fixing weight-balanced tree in MIT/GNU Scheme and slib
Scheme
5
star
43

word8

Word8 library
Haskell
4
star
44

warp-quic

WAI handler for HTTP/3 based on QUIC
Haskell
4
star
45

http2-tls

Library for HTTP/2 over TLS
Haskell
4
star
46

logreplay

A stress tool for web servers
Haskell
4
star
47

network-byte-order

peek and poke for network packets
Haskell
4
star
48

mew-contrib

Mew contribution
Emacs Lisp
4
star
49

sockaddr

Printing SockAddr
Haskell
3
star
50

gitcab

Haskell
3
star
51

relit

Regular Expression Literal for Haskell
Haskell
3
star
52

network-uri

URI library in Haskell
Haskell
2
star
53

parser-benchmark

A tiny benchmark for parsers of Haskell
Haskell
2
star
54

alternative-io

IO as Alternative instance
Haskell
2
star
55

okayama-u

Haskell code for okayama-u
Haskell
2
star
56

static-hash

Pure immutable hash whose lookup is O(1)
Haskell
2
star
57

test-framework-doctest-prime

Test Framework Provider for doctest
Haskell
2
star
58

tls13-spec-validator

syntax checker
Haskell
2
star
59

http-semantics

HTTP semantics
Haskell
2
star
60

distrib-bench

Benchmark for distributed system for Haskell and Erlang
Haskell
1
star
61

buggy-psq

Buggy PSQ
Haskell
1
star
62

acme-http

fork from acme-http v0.2.2
Haskell
1
star
63

tls13-utilities

Utilities for TLS 1.3
Haskell
1
star
64

event

Parallel IO manager
Haskell
1
star
65

network-cabal

1
star
66

pri

temporary use
Haskell
1
star
67

network-udp

Best current practice library for UDP
Haskell
1
star