presen.gby

Similar documents
kyoto.gby

fp.gby

2

monad.gby


2

haskell.gby

6-1

Java演習(4) -- 変数と型 --

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

アルゴリズムとデータ構造1

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

org/ghc/ Windows Linux RPM 3.2 GHCi GHC gcc javac ghc GHCi(ghci) GHCi Prelude> GHCi :load file :l file :also file :a file :reload :r :type expr :t exp

Java学習教材

ALG ppt

3 3.1 algebraic datatype data k = 1 1,1... 1,n1 2 2,1... 2,n2... m m,1... m,nm 1 m m m,1,..., m,nm m 1, 2,..., k 1 data Foo x y = Alice x [y] B

untitled

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

Copyright c 2006 Zhenjiang Hu, All Right Reserved.

Thread

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

# let st1 = {name = "Taro Yamada"; id = };; val st1 : student = {name="taro Yamada"; id=123456} { 1 = 1 ;...; n = n } # let string_of_student {n

ALG ppt

2

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

データ構造とアルゴリズム論

GUIプログラムⅣ

PowerPoint Presentation

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

Q&A集

K227 Java 2

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

GUIプログラムⅤ

アルゴリズムとデータ構造1

Java演習(9) -- クラスとメソッド --

Parametric Polymorphism

I HTML HashMap (i) (ii) :.java import java.net.*; import java.io.*; import java.util.hashmap; public class SimpleStopWatch { public static voi

< F2D E E6A7464>

: : : TSTank 2

Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

Safari AppletViewer Web HTML Netscape Web Web 15-1 Applet Web Applet init Web paint Web start Web HTML stop destroy update init Web paint start Web up

text_08.dvi

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

10K pdf

新・明解Java入門

I. (i) Java? (A). 2Apples (B). Vitamin-C (C). Peach21 (D). Pine_Apple (ii) Java? (A). Java (B). Java (C). Java (D). JavaScript Java JavaScript Java (i

橡告改.PDF

r2.dvi

2

解きながら学ぶJava入門編

Functional Programming

:30 12:00 I. I V II. III. IV. ( a d) V. VI : A ActionListener aa addactionlistener AE ActionEvent K KeyListener ak addkeyliste

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

< F2D B825082CC96E291E82E6A7464>

(Eclipse\202\305\212w\202\324Java2\215\374.pdf)

< F2D A839382CC906A2E6A7464>

とても使いやすい Boost の serialization

I java A

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

KeyListener init addkeylistener addactionlistener addkeylistener addkeylistener( this ); this.addkeylistener( this ); KeyListener public void keytyped

Copyright c 2008 Zhenjiang Hu, All Right Reserved.


Java (7) Lesson = (1) 1 m 3 /s m 2 5 m 2 4 m 2 1 m 3 m 1 m 0.5 m 3 /ms 0.3 m 3 /ms 0.6 m 3 /ms 1 1 3

:30 12:00 I. I VII II. III. IV. ( a d) V. VI : this==null, T == N A ActionListener A addactionlistener C class D actionperformed

Java (5) 1 Lesson 3: x 2 +4x +5 f(x) =x 2 +4x +5 x f(10) x Java , 3.0,..., 10.0, 1.0, 2.0,... flow rate (m**3/s) "flow

Microsoft Word - NonGenTree.doc

untitled

r02.dvi

8 if switch for while do while 2

ohp02.dvi

tkk0408nari

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

I. java.awt.rectangle java.lang.math random Java TM API java.awt Rectangle Rectangle (x,y)... public int x Rectangle X public int y Rectangle Y public

JAVA とテンプレート

bdd.gby

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

< F2D834F838C A815B A CC>

Microsoft PowerPoint ppt

ユニット・テストの概要

Java 3 p.2 3 Java : boolean Graphics draw3drect fill3drect C int C OK while (1) int boolean switch case C Calendar java.util.calendar A

19 3!! (+) (>) (++) (+=) for while 3.1!! (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics;

/ ( ) 8/7/ :21 p.2/64

< F2D B838A835882CC8CF68EAE2E6A7464>

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

GUIプログラムⅡ

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

Java言語 第1回

連載 構文解析器結合子 山下伸夫 (( 株 ) タイムインターメディア ) 文字列の分解 1 1 Haskell lines Prelude lines :: String -> [String] lines "" = [] lines s = let (l,s'

JAVA H13 OISA JAVA 1

< F2D A838B838D96402E6A7464>

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

r3.dvi

Java言語 第1回



< F2D F B834E2E6A7464>

< F2D82518CC282CC D2E6A7464>

3 Java 3.1 Hello World! Hello World public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World");

Transcription:

kazu@iij.ad.jp 1

2

Paul Graham 3

Andrew Hunt and David Thomas 4

5

Java 6

Java Java Java 3 7

Haskell Scala Scala 8

9

Java Java Dean Wampler AWT ActionListener public interface ActionListener extends EventListener { public void actionperformed(actionevent e); } 10

AWT ActionListener import java.awt.*; import java.awt.event.*; class ButtonApp { private final Button button = new Button(); public ButtonApp() { button.addactionlistener( new ActionListener() { public void actionperformed(actionevent e) { System.out.println("event received: " + e); } });}} 2 11

public interface Function1Void<A> { void apply(a a); } AWT ActionListener class ButtonApp { private final Button button = new Button(); public ButtonApp() { button.addactionlistener( new Function1Void<ActionEvent>() { public void apply(actionevent e) { System.out.println("event received: "+e); }});}} 2 12

Java public ButtonApp() { private final Button button = new Button(); } button.addactionlistener(#{ ActionEvent e -> System.out.println("event received: "+e) }); 13

14

15

16

{ 10, 20, 30, 40, 50 } 0 n n 10 * 0 + 20 * 1 + 30 * 2 + 40 * 3 + 50 *4 = 400 17

Java for 10 * 0 + 20 * 1 + 30 * 2 + 40 * 3 + 50 *4 = 400 18

for Douglas Crockford JavaScript: http://www.crockford.com/javascript/javascript.html for JavaScript C JavaScript C Java Lisp Scheme 19

20

for for for for for ) for two days for (i = 0; i < N; i++) { } 0 N = - + 1 (N - 1) - 0 + 1 = N 1/3 + 1/3 + 1/3 1 21

Java for public static int func(int[] ar) { int ret = 0; for (int i = 0; i < ar.length; i++) { ret = ret + ar[i] * i; } return ret; } int[] inp = {10,20,30,40,50}; func(inp); 400 22

Haskell MapReduce zip [0..] [10,20,30,40,50] [(0,10),(1,20),(2,30),(3,40),(4,50)] map (\(i,x) -> x*i) [0,20,60,120,200] foldl (+) 0 ((((0 + 0) + 20) + 60) + 120) + 200 400 func = foldl (+) 0. map (\(i,x) -> x*i). zip [0..] func [10,20,30,40,50] 400 23

24

25

26

http://www.itpl.co.jp/tech/func/essense_of_fp(sea0305).pdf 27

public class Sale { Date date; int amount; } Java Sale Sale (Date _date, int _amount) { date = _date; amount = _amount; } // Date public static int getmonth (Date d) { Calendar cal = Calendar.getInstance(); cal.settime(d); int month = cal.get(calendar.month); return month; } 28

Java public static List<Integer> monthlysale(list<sale> sales) { ArrayList<Integer> result = new ArrayList<Integer>(); int sum = 0; int prevmonth = getmonth(sales.get(0).date); for (Sale sale : sales) { if(prevmonth == getmonth(sale.date)) { sum += sale.amount; } else { result.add(sum); sum = sale.amount; } prevmonth = getmonth(sale.date); } if(sum!= 0) { result.add(sum); } return result; } 29

Haskell Sale data Sale = Sale UTCTime Int time :: Sale -> UTCTime time (Sale t _) = t amount :: Sale -> Int amount (Sale _ m) = m month :: Sale -> Int month s = m where day = utctday (time s) (_, m, _) = togregorian day 30

groupby ((==) on month) [Sale 2013-01-20 2020,Sale 2013-01-23 1750,Sale 2013-02-08 650,Sale 2013-02-14 3740,Sale 2013-02-18 8000... [[Sale 2013-01-20 2020,Sale 2013-01-23 1750 ],[Sale 2013-02-08 650,Sale 2013-02-14 3740,Sale 2013-02-18 8000... UTCTime 31

map (map amount) [[Sale 2013-01-20 2020,Sale 2013-01-23 1750 ],[Sale 2013-02-08 650,Sale 2013-02-14 3740,Sale 2013-02-18 8000... [[2020,1750],[650,3740,8000,1960],[2200,6540... 32

map (foldl (+) 0) [[2020,1750],[650,3740,8000,1960],[2200,6540... [3770,14350,... 33

Haskell monthlysale :: [Sale] -> [Int] monthlysale = map (foldl (+) 0). map (map amount). groupby ((==) on month) 34

35

36

public class Person { String name; int age; } Java DB HashMap<String,Person> db = new HashMap<String,Person>(); Person sazae = new Person(" ", 24); Person fune = new Person(" ", 52); map.put(" ",sazae); map.put(" ",fune); // " " 37

String me = " "; Person mother = db.get(me); // " " Person gramma = db.get(mother.name); // " " String me = " "; Person mother = db.get(me); // " " Person gramma = db.get(mother.name); // null String me = " "; Person mother = db.get(me); // null Person gramma = db.get(mother.name); // 38

String me = " "; Person mother = db.get(me); Person gramma = null; if (mother!= null) { gramma = db.get(mother.name); } 39

<Person> get(<string>) null null null Java null null 40

41

Haskell DB data Person = Person String Int name :: Person -> String name (Person n _) = n age :: Person -> Int age (Person _ a) = a db :: [(String, Person)] db = [(" ", Person " " 24),(" ", Person " " 52)] 42

lookup Maybe DB lookup :: String -> [(String, Person)] -> Maybe Person Person Maybe Person : Nothing : Just (Person " " 24) 43

Maybe Person case... of findgramma :: String -> Maybe Person findgramma me = case lookup me db of Nothing -> Nothing Just mother -> lookup (name mother) db 44

45

46

(Java ) String me = " "; Person mother = db.get(me); Person gramma = null; if (mother!= null) { gramma = db.get(mother.name); } String me = " "; Person mother = db.get(me); Person gramma = null; Person ggramma = null; if (mother!= null) { gramma = db.get(mother.name); if (gramma!= null) { ggramma = db.get(gramma.name); } } 47

(Haskell ) findgramma :: String -> Maybe Person findgramma me = case lookup me db of Nothing -> Nothing Just mother -> lookup (name mother) db findggramma :: String -> Maybe Person findggramma me = case lookup me db of Nothing -> Nothing Just mother -> case lookup (name mother) db of Nothing -> Nothing Just gramma -> lookup (name gramma) db 48

49

Maybe Maybe Java data Bool = False True data Maybe a = Nothing Just a data Either l r = Left l Right r 50

isalive mother && isalive gramma Maybe a findmother me &&> findmother mother 51

&&> mx &&> f = case mx of Nothing -> Nothing Just x -> f x findggramma :: String -> Maybe Person findggramma me = lookup me db &&> \mother -> lookup (name mother) db &&> \gramma -> lookup (name gramma) db ( ) findggramma :: String -> Maybe Person findggramma me = case lookup me db of Nothing -> Nothing Just mother -> case lookup (name mother) db of Nothing -> Nothing Just gramma -> lookup (name gramma) db 52

53

54

Java data Person = Person String Int data Sale = Sale UTCTime Int 55

data Shape = Rectangle Side Side Ellipse Radius Radius data IntList = Nil Cons Int IntList data Tree a = Leaf Node (Tree a) a (Tree a) 56

* ) Wiki ============== ** \* [ URL] - 1 -- 2 -- 2-1 ++ 2 ++ 2 57

type Wiki = [Element] Wiki data Element = HR H Int HText P HText UOL Xlist type HText = [PText] data PText = Raw Char Escaped Char -- backslash Anchor Title URL type URL = String type Title = String data Xlist = Ulist [Xitem] Olist [Xitem] Empty data Xitem = Item HText Xlist 58

59

60