(プレゼン前の準備)

プレゼン設定

ローカルサーバ

ネットワーク

ディスプレイの調整 〜 Precision M6500の場合

MagicHaskeller on the Web:
Inductive Functional Programming System for Casual Programmers

Susumu Katayama
片山 晋

Dec. 9, 2013

What is it?

何それ?

Automatic programming service for Haskell which is:


















(Local copy of my home page, with links to the locally-running MagicHaskeller, just in case when the network is down.)

What it can do

できること

Limitations

現在の制限事項

Implementation

実装

Reducing the memo table size

メモテーブルの節約

Summary of achievements

やったことのまとめ

Future work

It would be nice if the function set is selectable.
That is difficult, however, because one set of functions require one memo table.
and currently, only one memo table (and its backup) are in use.
However, if some of you can run the server programs in your servers with different settings,
various settings will become available at a time.
There still exists a problem, i.e., I am reluctant to release my ugly code. So, if you are interested in serving it with your settings, please motivate me by letting me know that:)

Thanks

for not cracking the server so far!

Appendix

Evaluation: 99 Haskell Problems

Problem 1: Find the last element of a list.
Problem 2: Find the last but one element of a list.
Problem 3: Find the K'th element of a list. The first element in the list is number 1.
Problem 4: Find the number of elements of a list.
Problem 5: Reverse a list.
Problem 6: Find out whether a list is a palindrome.

Problem 7: Flatten a nested list structure. Could not make a query (no support of creating new data types)

Problem 8: Eliminate consecutive duplicates of list elements.
Problem 9: Pack consecutive duplicates of list elements into sublists.
Problem 10: Run-length encoding of a list.

Problem 11 - 13: Could not make a query (no support of creating new data types)

Problem 14: Duplicate the elements of a list.
Problem 15: Replicate the elements of a list a given number of times.
Problem 16: Drop every N'th element from a list.
Problem 17: Split a list into two parts; the length of the first part is given.
Problem 18: Extract a slice from a list.
Problem 19: Rotate a list N places to the left.
Problem 20: Remove the K'th element from a list.

Evaluation: Problems from the Flash Fill paper (Gulwani, PoPL 2011)

Example 1: Extract the telephone number.
Example 2: Extract the quantity.
Example 3: Extract the directory name
Example 4: Generate abbreviation.
Example 5: Split odds.
Example 6: Remove excess spaces.

Results in Full

99 Haskell Problems
problem MagH result Flash Fill result
Problem 1 O O
Problem 2 O O
Problem 3 O X
Problem 4 Otr X
Problem 5 Otr X
Problem 6 O X
Problem 7 Xdata Xdata
Problem 8 O X
Problem 9 Otr X
Problem 10 X X
Problem 11 Xdata Xdata
Problem 12 Xdata Xdata
Problem 13 Xdata Xdata
Problem 14 O O
Problem 15 O X
Problem 16 X X
Problem 17 X X
Problem 18 O X
Problem 19 X X
Problem 20 X X
Flash Fill Examples
problem MagH result Flash Fill result
Example 1 X O
Example 2 O O
Example 3 X O
Example 4 O O
Example 5 X O
Example 6 O O
Example 7 X O
Example 8 X X
Example 9 X O
Example 10 X O

Future work (alternative)