vim scriptとjavaとhaskell

Download Vim scriptとJavaとHaskell

If you can't read please download the document

Upload: aiya000

Post on 17-Jan-2017

695 views

Category:

Software


0 download

TRANSCRIPT

Vim script
JavaHaskell

@aiya_000

1 2015-07-042 2015-10-31

3

Vim script

Java

Haskell

: ( @aiya_000 )

: Vim

: Vim, Java, Haskell, C++, C#, Vim script, Vim, , etc

()

: @aiya_000 : @public_ai000ya

Github : aiya000

aho-bakaup.vimadrone.vimC++(TMP)

Vim script ( + )

Java +

Haskell ()

(Haskell)

Vim script

Vim

8Vim

Vim script

Vim

8Vim

Vim script()

Java

Java

( )

OOP()

Java()

Haskell

Haskell

Haskell

C, Java, C#=> ( )

Haskell()

Vim script

Java

Haskell

Vim script

Java

Haskell

Vim script -

autocmd

( OOP )

Vim script -

~~~

boolean( ) 1 or 0

Vim script -

int + double = double( )

string + int = int( )

doublestring + int = int ( )

intstring + intstring = int ( )

Vim script -

string . string = string( )

Vim script -

string . string = string( )

Vim script -

int

Vim script -

==

is

is

is

Vim script -

==

==

Vim script -

==

==

Vim script -

Vim script -

Vim script -

Haskell

Vim script !

Vim script !

Vim script !

- funcref

Vim script !

Vim script !

!?

Vim script

Java

Haskell

Java

OOP

C++autoC#var

Java

OOP

C++autoC#var

Java

Java

OOP

C++autoC#var

Java

(Java8)

Java

Java

Java8

Java8

Stream APIStreamReaderStream

(1,2,3,4,5..)

Optional

,-1null

Java8

Java8

ThreadRunnable

Java - StreamAPI

StreamAPI => (1,2,3,4,5..10)

!=

Java - StreamAPI

Java - StreamAPI

Stream, ,

Java - StreamAPI

- Stream1FizzBuzz

Java - StreamAPI

Java - StreamAPI

iterate(1,2...)1(1,2,3,4,5....10000,10001,10002...)

Java - StreamAPI

iterate(1,2...)1(1,2,3,4,5....10000,10001,10002...)

Java - StreamAPI

Java -

(n -> n + 1)

Java -

Java -

Java -

FunctionalInterface

Java - StreamAPI

iterate(1,2...)1(1,2,3,4,5....10000,10001,10002...)

Java - StreamAPI

iterate(1,2...)1(1,2,3,4,5....10000,10001,10002...)

Java - StreamAPI

Java - StreamAPI

map

Java - StreamAPI

mapn35 nFizzBuzzn3 nBuzzn5 nFizz n

Java - StreamAPI

Java - StreamAPI

(1,2...)(map)30

Java - StreamAPI

Java - StreamAPI

Java - StreamAPI

Java - StreamAPI

Java - StreamAPI

Java - StreamAPI

Java8

1Java

Java - StreamAPI

Java8

1Java

Java - StreamAPI

Stream3 or 4

Java - StreamAPI

Stream3 or 4

Java - StreamAPI

Stream3 or 4

Stream

Java - StreamAPI

Stream3 or 4

Stream

Java - StreamAPI

Stream3 or 4

( Stream )

Java - StreamAPI

Stream3 or 4

Stream

Java - StreamAPI

Java - StreamAPI

Java - StreamAPI

Java

Vim script

Java

Haskell


Haskell

Haskell

Haskell -

Java

Haskell -

=

func x = x + 1 -- func 10 -- (11)

Haskell -

( 2 )

Haskell -

()

Haskell -

a = 10 * 20

Haskell -

aa2

Haskell -

a

Haskell -

a

a10 * 2010 * 20

=> a=>

=>

Haskell -

(+ )

Haskell

Kata

Kata

Type

Haskell -

=> Int

=> Float

=> Char

=> [hoge]

=> String [Char]

=> (Int, Float, Char)

etc...

Haskell -

=> Int

=> Float

=> Char

=> [hoge]

=> String [Char]

=> (Int, Float, Char)

etc...

Haskell -

Java

Haskell -

(GHCiHaskellREPL)

Haskell -

(String)(Char)

Haskell -

Haskell -

(!!) n

Haskell -

*2

(*2)

Haskell -

:

Haskell -

:

Haskell -

:

( Int Float Char )1

Haskell -

ghci :t

Haskell -

ghci :t

Num t

t

Haskell -

=> Int

=> Float

=> Char

=> [hoge]

=> String [Char]

=> (Int, Float, Char)

etc...

Haskell -

Haskell -

Haskell -

Haskell -

123

Haskell -

Haskell -

()

Haskell

Haskell

Haskell -

:: ->

=

Haskell -

:: ->

=

Haskell -

:: ->

=

Haskell -

:: -> ->

=

Haskell -

:: -> ->

=

Haskell -

Int -> Int -> Int Int

Haskell -

Haskell -

Haskell

Haskell -

Haskell -

Haskell -

2

Haskell -

2

Haskell -

2

Haskell -

Haskell -

(\ -> )(\ -> )

Haskell -

(\x -> x + 1) func x = x + 1

Haskell -

2

Haskell -

2

fx2

Haskell -

2

fx2f

Haskell -

2

fx2f

twice (\x -> x + 1) 10 10 + 1 + 1

Haskell -

twice (\x -> x + 1) 10(\x -> x + 1) ( (\x -> x + 1) 10)(\x -> x + 1) (11)(11 + 1)12

Haskell -

Haskell -

Haskell -

Haskell -

Haskell -

Haskell -

Haskell -

(\x -> x + 1)

(+1)

Haskell -

(\x -> x + 1)

(+1)

Haskell -

Haskell(+)

(+) :: Num a => a -> a -> a

2

(+1) :: Num a => a -> a

(+)1 = (+) 1 = (+1)

Haskell -

Haskell(+)

(+) :: Num a => a -> a -> a

2

(+1) :: Num a => a -> a

(+)1 = (+) 1 = (+1)

Haskell21

Haskell -

Haskell -

(+)1a ( )

a = (+) 1 = (+1)

Haskell -

a = (+1)10

(+1) 10 = 11

a1

Haskell -

Haskell -

Haskell -

(\x -> x + 1) 10(\10 -> 10 + 1)(10 + 1)(11)

Haskell -

(\x -> x + 1) 10(\10 -> 10 + 1)(10 + 1)(11)

(+)

Haskell -

(+1) 10(10 + 1)(11)

(\x -> x + 1) 10(\10 -> 10 + 1)(10 + 1)(11)

Haskell -

---

(\x -> x + 1)

(\x -> x + 1) = x.x+1

(\x -> x + 1) 10 = (x.x+1)10

(\10 -> 10 + 1) = 10.10+1

Haskell -

---

(\x y -> x + y)

(\x y -> x + y) = xy.x+y

(\x y -> x + y) 1 = (xy.x+y)1(\1 y -> 1 + y) = (1)y.1+y

(\1 y -> 1 + y) 10 = ((1)y.1+y)10(\1 10 -> 1 + 10) = (1)(10).1+10

Haskell

Haskell -

Haskell -

Haskell -

101

Haskell -

101

Haskell -

Haskell -

( func1 ) 2

Haskell -

( func1 )

Haskell -

( func1 )

1

Haskell -

( func1 )

1

Haskell -

Haskell -

xy.x+y

(\x y -> x + y)

Haskell -

xy.x+y

(\x y -> x + y) xy2

Haskell -

xy.x+y(xy.x+y)1

Haskell -

xy.x+y(xy.x+y)1(1)y.x+y

Haskell -

xy.x+y(xy.x+y)1(1)y.x+y

Haskell -

xy.x+y(xy.x+y)1(1)y.x+y

2

Haskell -

xy.x+y(xy.x+y)1(1)y.x+y

Haskell -

xy.x+y(xy.x+y)1(1)y.x+y

1

Haskell -

xy.x+y(xy.x+y)1(1)y.x+y

(xy.x+y)1(1)y.x+y1

Haskell -

xy.x+y(xy.x+y)1(1)y.x+y

Haskellk

Haskell -

Haskell01

Haskell -

2func1

Haskell -

2func1func11a

Haskell -

2func1func11aa func11=>

Haskell -

2func1func11ab1a110Int

Haskell -

2func1func11ab1a110Int

Haskell -

Haskell0nn

Haskell -

where

let - in

if - else

Haskell -

where

let - in

if - else

Haskell - where

Haskell

Haskell - where

Haskell - where

()

Haskell - where

()

where

Haskell - where

Haskell - where

wherefuncB

Haskell - where

Haskell - where

Haskell -

where

let - in

if - else

Haskell - let-in

Haskell - let-in

funcB

Haskell - let-in

wherewhere

let-in

Haskell -

where

let - in

if - else

Haskell -

where

let - in

if - else

Haskell - if-else

if-elseelse if

( )

Haskell - if-else

Haskell - if-else

True

False

Haskell - if-else

Haskell - if-else

Haskell - if-else

case-of, ()

Haskell

>> Haskell >=)

Haskell -

(>> Nothing)

Haskell -

(>> Nothing)

Haskell

Haskell

- -

Haskell

- -

Writer

State

(Haskell)

Haskell

()