3VCZ
say = "I love Ruby"
puts say #=> I love Ruby
say['love'] = "*love*"
puts say.upcase #=> I *LOVE* RUBY
# "I *love* Ruby" in five times
5.times { puts say }
(SBEVBM5ZQJOH
def add1(x):
return x + 1
class A(object):
pass
a = A()
add1(a)
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 7
Slide 7 text
def add1(x):
return x + 1
class A(object):
pass
a = A()
add1(a) # TypeError: unsupported operand type(s) for +: 'A' and ‘int'
# (Interpreter)
(SBEVBM5ZQJOH
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 8
Slide 8 text
(SBEVBM5ZQJOH
class A {
int add1(int x) {
return x + 1;
}
public static void main(String args[]) {
A a = new A();
add1(a);
}
}
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 9
Slide 9 text
(SBEVBM5ZQJOH
class A {
int add1(int x) {
return x + 1;
}
public static void main(String args[]) {
A a = new A();
add1(a);
}
}
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
# add1(int) in A cannot be applied to (A) add1(a);
# (Compiler)
Slide 10
Slide 10 text
(SBEVBM5ZQJOH
class A {
int add1(int x) {
return x + 1;
}
public static void main(String args[]) {
A a = new A();
if (false)
add1(a);
}
}
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 11
Slide 11 text
(SBEVBM5ZQJOH
class A {
int add1(int x) {
return x + 1;
}
public static void main(String args[]) {
A a = new A();
if (false)
add1(a);
}
}
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
# add1(int) in A cannot be applied to (A) add1(a);
Slide 12
Slide 12 text
(SBEVBM5ZQJOH
ü 4UBUJDUZQFDIFDLJOHDBUDIFTCVHTFBSMJFS
UIFSFCZSFNPWJOHUIFHSFBUFSDPTUPGGJYJOH
CVHTMBUFSJOUIFEFWFMPQNFOUDZDMFPSUIFFWFOHSFBUFSDPTUPGBCVHUIBUPDDVSTJOUIF
GJFME
ü %ZOBNJDUZQFDIFDLJOHEPFTOUHFUJOZPVSXBZZPVDBOJNNFEJBUFMZSVOZPVSQSPHSBN
XJUIPVUGJSTUIBWJOHUPDIBOHFZPVSQSPHSBNJOUPBGPSNUIBUUIFUZQFDIFDLFSXJMM
BDDFQU
ü 4UBUJDUZQFDIFDLJOHFOBCMFTGBTUFSFYFDVUJPOCFDBVTFUZQFDIFDLJOHOFFEOPUCF
QFSGPSNFEBUSVOUJNFBOECFDBVTFWBMVFTDBOCFTUPSFEJONPSFFGGJDJFOU
SFQSFTFOUBUJPOT
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 13
Slide 13 text
(SBEVBM5ZQJOH
ü %ZOBNJDUZQFDIFDLJOHNBLFTJUFBTZUPEFBMXJUITJUVBUJPOTXIFSFUIFUZQFPGBWBMVF
EFQFOETPOSVOUJNFJOGPSNBUJPO
ü 4UBUJDUZQJOHJNQSPWFTNPEVMBSJUZ
ü 'PSFYBNQMF
JOBEZOBNJDMBOHVBHF
ZPVDBODBMMBMJCSBSZTVCSPVUJOFJODPSSFDUMZCVUUIFOHFUBUZQFFSSPS
EFFQJOTJEFUIBUSPVUJOF4UBUJDDIFDLJOHDBUDIFTUIFUZQFFSSPSTVQGSPOU
BUUIFQPJOUXIFSFZPVDBMMFE
UIFTVCSPVUJOF
X 4UBUJDUZQFDIFDLJOHNBLFTZPVUIJOLNPSFTFSJPVTMZBCPVUZPVSQSPHSBNXIJDIIFMQT
UPGVSUIFSSFEVDFCVHT
X 8JUIEZOBNJDUZQFDIFDLJOH
ZPVEPOUIBWFUPTQFOEUJNFXSJUJOHUZQFBOOPUBUJPOT
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 14
Slide 14 text
(SBEVBM5ZQJOH
def add1(x):
return x + 1
class A(object):
pass
a = A()
add1(a)
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 15
Slide 15 text
(SBEVBM5ZQJOH
def add1(x : int):
return x + 1
class A(object):
pass
a = A()
add1(a)
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 16
Slide 16 text
(SBEVBM5ZQJOH
def add1(x : ?):
return x + 1
add1(1) # int ~> ?
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 17
Slide 17 text
(SBEVBM5ZQJOH
def g(p : int * int):
return p[0]
def f(x, y : int):
p = (x, y)
g(p) # ? * int ~> int * int
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 18
Slide 18 text
(SBEVBM5ZQJOH
S ~ T UPFYQSFTTUIBUUZQFS JTDPOTJTUFOUXJUIUZQFT
'PSBOZUZQFT
XFIBWFCPUI? ~ T BOET ~ ?
'PSBOZCBTJDUZQFB
TVDIBTJOU
XFIBWFB ~ B
"UVQMFUZQFT1 * T2 JTDPOTJUFOUXJUIBOPUIFSUVQMFUZQFS1 * S2 JGT1 ~ S1 BOET2 ~ S2
5IJTSVMFHFOFSBMJ[FTJOBTUSBJHIUGPSXBSEXBZUPUVQMFTPGBSCJUSBSZTJ[F
"GVODUJPOUZQFfun(T1, ..., Tn, R) 5˘5O BSFUIFQBSBNFUFSUZQFT
3JTUIFSFUVSOUZQF
JTDPOTJTUFOUXJUIBOPUIFSGVODUJPOUZQFfun(S1, ..., Sn, U)
JGT1 ~ S1˘Tn ~ Sn BOER ~ U
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
Slide 19
Slide 19 text
(SBEVBM5ZQJOH
int ~ int
int !~ bool
? ~ int
bool ~ ?
int * int ~ ?
fun(?, ?) ~ fun(int, int)
? ~ fun(int, int)
int * int !~ ? * bool
IUUQXQIPNFTTPJDJOEJBOBFEVKTJFLXIBUJTHSBEVBMUZQJOH
4JNQMF
def say_hello()
puts("Hello world!");
end
say_hello();
Slide 25
Slide 25 text
4JNQMF
def say_hello()
puts("Hello world!")
end
say_hello()
Slide 26
Slide 26 text
4JNQMF
def say_hello
puts "Hello world!"
end
say_hello
Slide 27
Slide 27 text
%ZOBNJDBMMZUZQFE
def prime?(n)
(2...n).all? { |i| n % i != 0 }
end
# Prime pairs that differ from six
def sexy_primes(n)
(9..n).map { |i| { i - 6, i } }
.select { |i| i.all? { |x| prime?(x) } }
end
puts sexy_primes(100_000)