Ebooks, Audobooks and Classical Music from Liber Liber
a b c d e f g h i j k l m n o p q r s t u v w x y z





Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
ML 프로그래밍 언어 - 위키백과

ML 프로그래밍 언어

위키백과 ― 우리 모두의 백과사전.

ML은 범용 프로그래밍 언어의 일종이다. 프로그래밍 언어 분야의 핵심 연구 성과들을 잘 반영하면서도 실용적인 언어로 알려져 있다. 특히, 그 타입 시스템의 안전성 덕택에 프로그램 실행중의 타입 에러를 실행전에 미리 모두 찾아준다. 힌들리-밀너(Hindley-Milner) 타입 추론 시스템을 구현하여 자바와 같은 길고 불편한 자료형(타입) 표기 없이도 변수들의 자료형을 추론할 수 있다.

ML은 하스켈과 같은 순수한 함수형 언어와 같이 함수가 자유롭게 사용될 수 있으면서도, 메모리상태를 변화시키는 명령을 허용하는 명령형 프로그래밍 언어(imperative programming language)의 모습도 갖추고있다. 이때문에 함수형 언어이면서 순수하지 않은 함수형 언어로 분류된다.

그 밖에 ML에서는 메모리 재활용(garbage collection)을 통해서 자동으로 메모리가 관리되며, 함수의 다형성(polymorphic functions)이 지원되어 타입과 상관없이 실행될 수 있는 함수가 정의될 수 있고, 대수적 자료형(algebraic data type)이 지원되어 상위에서 자료구조가 표현될 수 있고, 값들의 패턴 매칭을 통해 간편하게 조건문이 만들어 지며, 간단하고 강력한 예외 시스템으로 프로그램의 실행흐름을 편리하게 기획할 수 있다.

ML 프로그래밍 시스템은 다양한 종류가 있다. SML(Standard ML)과 Caml이 가장 널리 알려진 것이며, F 샤프 등의 다른 언어들도 존재한다. 한국에서 개발된 ML 프로그래밍 시스템으로는 KAIST에서 개발되었고 현재는 서울대에서 확장/관리되고 있는 nML이 존재한다.

ML의 기본 아이디어는 C#, Java, 하스켈, 사이클론, 네멜레 등 많은 언어에 영향을 미쳤다.

ML은 주로 프로그래밍 언어의 실행기(interpreter)나 번역기(compiler), 프로그램 분석기 등을 개발하고 다루는 데 많이 사용되지만, ML은 본래 범용 프로그래밍 언어이므로 생물정보학, 금융 전산망, P2P 클라이언트/서버 프로그램 등의 개발에도 사용된다.

[편집] 예제

[편집] ML 함수의 형태

함수형 프로그래밍의 "Hello World"라고 할 만한 것은 팩토리얼을 계산하는 코드이다. 순수 ML로는 다음과 같이 표현할 수 있다.

fun fac : (fn: int -> int) 0 = 1
 | fac n = n * fac (n-1);

이 코드는 팩토리얼을 한 개의 base case를 가진 재귀 함수로 정의한 것이다. 수학 교과서에서 볼 수 있는 팩토리얼의 정의와 비슷하다고도 할 수 있다. ML 코드는 문법과 계산방식의 측면에서 수학적 언어와 닮았다.

팩토리얼 함수의 첫번째 줄은 이 함수의 자료형을 표시하는 부분이다. ML은 코드로부터 자동으로 변수와 함수의 자료형을 추론하므로 이 부분은 없어도 무방하다. 첫번째 줄은 "함수 fac (fac)의 자료형은 (:) 정수에서 정수로 가는 (fn: int -> int) 함수이다." 와 같이 해석할 수 있다. 따라서 이 함수는 정수를 인자로 받아 또 다른 정수를 반환하는 함수이다.

자료형을 명시하는 부분을 제거하면 코드는 다음과 같이 간단해진다.

fun fac 0 = 1
 |  fac n = n * fac(n-1);

함수의 인자가 괄호로 둘러싸여 있지 않고 공백으로 구분되어 있음을 주목하라. 두 번째 줄은 ML의 또다른 중요한 특성인 패턴 매칭으로 이루어져 있다. 함수 fac은 인자가 0이면 1을 반환한다. 나머지 모든 경우에 대해서는 두 번째 줄을 실행하여 0에 도달할 때까지 fac을 재귀적으로 계속 호출한다.

[편집] 바깥 고리

주요 프로그래밍 언어 (더 보기)

산업용: 델파이 | 루비 | 리스프 | 비주얼 베이직 | 스몰토크 | 어셈블리 | 얼랑 | 에이다 | 오브젝티브-C | 자바 | 자바스크립트 | 코볼 | 파이썬 | Perl | 포트란 | ABAP | AWK | C | C++ | C# | PHP | PL/SQL | SAS | sh | VB.NET

학문용: 로고 | 스킴 | 에펠 | 파스칼 | 프롤로그 | 하스켈 | ML

역사적 의미가 있는 언어: 베이직 | 시뮬라 | 클리퍼 | 파워빌더 | ALGOL | APL | MUMPS | PL/I

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com