전체 글 (231) 썸네일형 리스트형 [OCaml] Lists 리스트를 대상으로 하는 패턴매칭은 아래 포스팅에 작성하였다. 🚩 https://aowwl.tistory.com/117 [OCaml] Pattern matching 📁 match-with expression 값의 형태에 따라 다른 행동을 수행하도록 하는 expression이다. 해당 표현은 expression이므로 값으로 도출된다. 기본형은 다음과 같다. match [expression] with | [pattern1] -> [expression1] | [pattern2] -> [expression2] ... | [patternN] -> [expressionN] 위의 pattern들은 상수(constant) 혹은 변수(variable)로 구성되어 있다. 만약 [pattern1]부터 Wildcard라면, 그 밑으로는 무시된다. 위 expression1, ... N 들의 타입이 같아야한다. match with 구문을 실행하는 과정은 다음과 같다. expression을 .. [OCaml] Module system 📁 모듈 시스템(Module system) 📌 모듈은 자료(변수)와 행동(함수)로 구성되는데, 함수형 언어에서 행동은 곧 자료이므로 모듈은 자료의 모음이다. OCaml은 모듈 시스템을 지원하며, 프로그램은 여러개의 모듈로 구성된다. JAVA/C++의 클래스와 유사하다. 🔎 모듈과 클래스의 차이점 모듈은 그 자체로 타입이 아니다. 때문에 객체화할 수 없으며, 상태(state)를 지니지 않는다. 클래스는 instance를 가질 수 있으며 각 객체마다 상태를 지니지만, 모듈은 단순히 자료들의 모음일뿐이므로 함수를 호출하거나 자료를 읽는 행위만 가능하다. 이때 state란, class를 instance화 했을때 볼 수 있다. 예를 들어 아래와 같은 class A가 존재하고, x, y라는 instance가 존재한.. [OCaml] 문법 정리 📁 Comment(주석) .📌 OCaml에서는 (* ... *) 내에서 ... 부분의 문자열을 주석화한다. (* OCaml 스타일의 주석 *) OCaml은 multiline comment만 지원한다. 위 형태 외의 다른 방법은 모두 컴파일에러를 발생시킨다. C/C++, Java의 multiline comment인 (/* ... */)와 동일하게 동작하지만 형태가 약간 다르므로 주의해서 사용해야한다. 📁 Standard input/output 📌 Standard Input : OCaml의 built-in함수인 readline 함수를 이용한다. readline() 함수는 unit value를 인자로 받으며, 사용자의 입력을 문자열로 반환한다. 이때 linefeed는 제외하고 반환하는데, linefeed란 입.. [OCaml] 구문(Statement)와 표현식(Expression) 📁 Statement와 Expression 프로그래밍언어에서 statement와 expression은 서로 다른 용도이다. 📌 Statement 실행 시 프로그램의 상태전이를 수행하는 언어의 구성 요소이다. 상태전이란 메모리 상태를 변경하는 행위를 뜻하는데, 그렇기 때문에 값을 반환하지 않는다. int x = 3; 위 코드는 비어있는 메모리에 3이 들어갈 뿐 어떠한 값을 반환하지 않기 때문에 statement이다. 📌 Expression 실행 시 값으로 계산되는 언어의 구성요소이다. 상태전이를 수행하지 않고, 항상 실행 결과로 "값"을 도출한다 int x = 1 + 2; 위 코드에서 우항의 1, 2, 1+2 각각 1, 2, 3이라는 값을 반환하기 때문에 expression이다. 🔎 언어에 따른 state.. [OCaml] Primitive types 📁 프로그래밍 언어에서 type를 이해하는 방법 📌 타입(type)을 값(value)의 집합(set)으로 이해하기 예를 들면 다음과 같이 표현할 수 있다. value 3은 int 타입이다. ➡ 3은 int 집합의 원소이다. 변수 x는 char 타입이다. ➡ 변수 x는 char 집합의 원소를 담는 그릇이다. 표현식 (x + 1.2)는 float 타입이다. ➡ 표현식 (x + 1.2)의 연산결과는 float 집합의 원소이다. 함수 foo는 아무것도 반환하지 않는다. ➡ 함수 foo의 반환값은 공집합인 void의 원소이다. 📁 Unit 타입 📌 unit 타입은 "()" 하나로 구성된 singleton 집합이다. unit 타입은 "아무것도 없음"을 나타내는 값이다. OCaml의 모든 표현식은 반드시 값으로 계산.. [OCaml] Introduction to OCaml 📁 OCaml이란? OCaml = Objective Caml. Caml에 객체지향(OOP)개념을 추가하여 확장한 버전 Caml : ML family에 속하는 프로그래밍 언어 🔎 ML이란? Meta Language. 다른 언어를 기술하거나 분석하는 데 쓰는 언어를 의미한다. 📁 Ocaml의 특징 1. Functional programming language 2. Strongly typed language 3. Type inference 4. Polymorphism 5. Pattern matching 6. Module system Ocaml을 사용하는 이유함수형 언어의 유용한 특징을 다양한 언어에서 차용하는 추세이다.e.g.) C++, Java 등의 프로그래밍 언어에서 람다표현식, 다양한 함수형 라이브러리를.. 충남대학교 8기 글로벌 SW/AI 지필고사 1. 아래 코드의 출력 결과를 작성하시오. // Java class A { public void foo() { System.out.println("Class A"); } } class B extends A { public void foo() { System.out.println("Class B"); } } class Main { public static void main(String[] args) { A obj = new B(); obj.foo(); } } // C++ class A { public : void foo() { std::cout 이전 1 ··· 21 22 23 24 25 26 27 ··· 29 다음