คลีน (Clean) เป็นภาษาโปรแกรมเชิงฟังก์ชันแบบบริสุทธิ์ โดยเคยมีชื่อเรียกว่า ภาษาคอนเคอร์แรนต์ คลีน ซีสเต็ม (Concurrent Clean System), จากนั้นมีชื่อว่า คลีน ซีสเต็ม (Clean System) และสุดท้าย คือ คลีน (Clean) ภาษาคลีนพัฒนาขึ้นโดยกลุ่มนักวิจัยจากมหาวิทยาลัยราดบาวด์ (Radboud University), เมืองไนเมเคิน (Nijmegen) ประเทศเนเธอร์แลนด์ ตั้งแต่ปี ค.ศ. 1987 ภาษานี้มีคุณลักษณะและซินแท็กซ์ (Syntax: วากยสัมพันธ์, การใช้คำและคำสั่งในการเขียนโปรแกรม) ที่ใกล้เคียงกับภาษาโปรแกรมเชิงฟังก์ชั่นอีกหลาย ๆ ภาษาที่เกิดขึ้นหลังจากนั้น ยกตัวอย่างที่เห็นชัดเจน คือ ภาษาแฮสเคิล

คลีน (Clean)
กระบวนทัศน์ภาษาโปรแกรมเชิงฟังก์ชันแบบบริสุทธิ์
ผู้ออกแบบกลุ่มนักวิจัยซอฟต์แวร์ของมหาวิทยาลัยราดบาวด์ เมืองไนเมเคิน ประเทศเนเธอร์แลนด์
เริ่มเมื่อค.ศ. 1987
รุ่นเสถียร
3.0 / 19 ตุลาคม ค.ศ. 2018
ระบบชนิดตัวแปรstrong, static, dynamic
ระบบปฏิบัติการระหว่างแพลตฟอร์ม
สัญญาอนุญาตSimplified BSD[1]
นามสกุลของไฟล์.icl, .dcl, .abc
เว็บไซต์clean.cs.ru.nl
ได้รับอิทธิพลจาก
ภาษาลีน Lean, มิรันด้า (Miranda), แฮสเคิล (Haskell)
ส่งอิทธิพลต่อ
แฮสเคิล (Haskell)[2]

การเขียนโค้ดในคลีน เปรียบเทียบกับแฮสเคิล แก้

ความแตกต่างในการใช้คำ (Syntax วายกสัมพัทธ์) แก้

การเขียนโปรแกรมในคลีนมีความคล้ายคลึงอย่างมากกับแฮสเคิล โดยมีความแตกต่างที่เห็นได้ชัดในบางจุด:[3]

แฮสเคิล (Haskell) คลีน (Clean) หมายเหตุ
[ x | x <- [1..10] , isOdd x]
[ x \\ x <- [1..10] | isOdd x]
การจัดการลิสต์

list comprehension


ในตัวอย่าง ทำการสร้างลิสต์ของเลขคี่ จากจำนวนเต็มที่อยู่ระหว่าง 1 ถึง 10

x:xs
[x:xs]
การสร้างลิสต์

cons operator

data Tree a
  = Empty
  | Node (Tree a) a (Tree a)
:: Tree a
  = Empty
  | Node (Tree a) a (Tree a)
ไทป์ข้อมูลแบบพีชคณิต

algebraic data type


ในตัวอย่าง เป็นการสร้างต้นไม้แบบไบนารี่ ที่มีโหนดรากหนึ่งตัว และ โหนดลูกสองตัว

(Eq a, Eq b) => ...
... | Eq a & Eq b
การยืนยันคลาส และ การยืนยันบริบทการใช้งานคลาส

class assertions and contexts

fun t@(Node l x r) = ...
fun t=:(Node l x r) = ...
การแสดงว่าตัวแปรสองตัวมีค่าเหมือนกัน

as-patterns

if x > 10 then 10 else x
if (x > 10) 10 x
ถ้า if

โดยรวมแล้ว ภาษาแฮสเคิลจะมีความหวานในวายกสัมพัทธ์ (syntactic sugar หมายถึง ง่ายต่อการเขียน การอ่าน่ และ ความเข้าใจมากกว่า เหมือนเคลือบน้ำตาลไว้) มากกว่าภาษาคลีน

อ้างอิง แก้

  • Clean Wiki คลีนวิกิ แหล่งรวมฟังก์ชั่นต่าง ๆ และ การทำงานของภาษาคลีน
  • Cloogle: Clean function search engine คลูเกิล แหล่งรวมคำสั่ง และ โค้ดแม่ของฟังก์ชั่นต่าง ๆ ที่อยู่ใน Standard Environment ของคลีน
  1. "Download Clean". Clean. สืบค้นเมื่อ 23 July 2019.
  2. "Idris - Uniqueness Types". สืบค้นเมื่อ 2018-11-20.
  3. ftp://ftp.cs.ru.nl/pub/Clean/papers/2007/achp2007-CleanHaskellQuickGuide.pdf[ลิงก์เสีย]