Functional Language

Download Report

Transcript Functional Language

Functional Language
ภาษาโปรแกรมเชงิ หน ้าที่
ลักษณะของภาษา

้ กการของฟั งก์ชน
ั ทางคณิตศาสตร์
ใชหลั
square(2) บ 2*2
บ 4

ั ทีม
รวมฟั งก์ชน
่ อ
ี ยูแ
่ ล ้วเข ้าด ้วยเป็ น
ั ใหม่
ฟั งก์ชน
F(x) บ G(x) o H(x)
บ G(H(x))
Composite Funct
เขียนเป็ น Lambda Expression ได ้
ดังนี้
ตัวอย่าง
กาหนด square บ lx.x*x
 จงหา to-the-fourth บ square o
square
บ
l(square,square).lx.square(square(
x))
บ lx.(lx.x*x(lx.x*x(x)))
บ lx.(lx.x*x(.x*x))

องค์ประกอบของภาษา
(Components)
้
ั มาทางาน แทนการ
ใชการเรี
ยกฟั งก์ชน
ระบุในรูปคาสงั่
 เป็ นลักษณะการทางานตามหน ้าที่
(Functional)
 มีองค์ประกอบดังนี้

ั เบือ
ฟั งก์ชน
้ งต ้น (Primitive Function)
ั (Functional Forms)
รูปแบบของฟั งก์ชน
วิธด
ี าเนินการ (Application Operation)
A Simple Functional
Programming Language
John Backus ได ้คิดภาษา FP เป็ น
ภาษาเชงิ หน ้าที่ ในปี 1970
 เป็ นภาษาทีม
่ ก
ี ารทางานไม่ขน
ึ้ กับ
สถาปั ตยกรรมของเครือ
่ ง
 มีออบเจกต์ n ตัว คือ x1, x2 ,…, xn
เขียนแทนด ้วย < x1, x2 ,…, xn >
้ กการของฟั งก์ชน
ั ทาง
 สร ้างขึน
้ โดยใชหลั
คณิตศาสตร์

ั เบือ
ฟั งก์ชน
้ งต ้น (Primitive
Functions)

Selection Operations
FIRST : < x1 , x2 ,…, xn > บ x1
LAST : < x1 , x2 ,…, xn > บ xn
TAIL : < x1 , x2 ,…, xn > บ < x2
,…, xn >
i : < x1 , x2 ,…, xn > บ xi , 1 < i
<n
ั เบือ
ฟั งก์ชน
้ งต ้น (ต่อ)

Structuring Operations
ROTR : < x1 , x2 ,…, xn > บ < xn ,
x1 ,…, xn-1 >
ROTL : < x1 , x2 ,…, xn > บ < x2 ,
x3 ,…, xn , x1 >
LENGTH : < x1 , x2 ,…, xn > บ n
CONS : < x, <x1 , x2 ,…, xn >>
บ <x, x1 , x2 ,…, xn >
ั เบือ
ฟั งก์ชน
้ งต ้น (ต่อ)
Arithmetic Operations
+ : < x, y > บ x + y
- : < x, y > บ x - y
* : < x, y > บ x * y
/ : < x, y > บ x / y
 Identity
ID : x บ x

ั เบือ
ฟั งก์ชน
้ งต ้น (ต่อ)

Predicate Functions
ATOM : x บ T if x atom
NULL : x บ T if x O
EQ
: <x,y> บ T if x = y
AND
: <x,y> บ T if both are
T
OR : <x,y> บ T if one is T
NOT
: <x,y> บ T if x is F
ั (Functional
รูปแบบฟั งก์ชน
Forms)

Composition
(fog) :xบ f:(g:x)
ROTL o CONS : < x1, <x2 , x3>>
บ
ROTL : CONS : < x1, <x2 ,
x3>> บ
ROTL : < x1, x2 , x3> บ
< x2, x3 , x1>
ั (ต่อ)
รูปแบบฟั งก์ชน

Construction
[f1, f2 ,…, fn] : x บ < f1 : x1 ,…, fn :
x>
[MIN, MAX, AVG, MED] : <0,1,2,3> บ
<MIN: <0,1,2,3>,MAX:<0,1,2,3>,
AVG:<0,1,2,3>,MED:<0,1,2,3>> บ
<0,3,1.5,2>
ั (ต่อ)
รูปแบบฟั งก์ชน

Insert
/f : x บ if x is <x1> then x1
else if x is the sequence <x1, x2 ,
..., xn >
and n>= 2 then f : <x1, /f : <x2 ,
..., xn >
ั (ต่อ)
รูปแบบฟั งก์ชน
/+ : <1,2,3,4>
บ + : <1, /+:
<2,3,4>>
บ + : <1, +: <2, /+ : <3,4>>>
บ + : <1, +: <2, + : <3, /+ :
<4>>>>
บ + : <1, +: <2, + : <3,4>>>
บ + : <1, +: <2, 7>>
บ + : <1, 9>>
LISP (List Processor)


Objects
ATOM, LIST
Function
– Identity function
QUOTE
– Selection Operations
CAR, CDR
– Structuring Operations CONS
– Predicate Functions
ATOM,
NULL, EQ, COND

DEFINE(ADD(LAMBDA(X Y) (PLUS X
Y)))
ข ้อแตกต่างระหว่าง Imperative
VS Functional
แนวคิดพืน
้ ฐานของการสร ้างโปรแกรม
้
 เวลาทีใ
่ ชในการท
างาน
 การเขียนโปรแกรม
ิ ธิภาพของภาษา
 ประสท
