# first-class citizen

11개의 포스트

[Dart] 함수형 프로그래밍과 람다식

1급 객체 1급 객체(First-class citizen)는 프로그래밍 언어에서 다른 객체들에 적용 가능한 연산을 모두 지원하는 객체입니다. 이는 객체를 변수에 할당하거나, 함수의 인자로 전달하거나, 함수의 반환값으로 사용할 수 있다는 것을 의미합니다. 1급 객체는 프로그래밍 언어의 중요한 특성 중 하나이며, 일반 적으로 변수나 데이터 구조에 저장할 수 있는 모든 것들이 1급 객체로 간주됩니다. 함수와 람다식 함수는 하나 이상의 작업을 수행하는 코드의 블록입니다. 함수는 입력을 받아서 처리를 하고, 결과를 반환하는 역할을 합니다. 함수는 이름, 매개변수, 반환값, 함수 내부의 코드로 구성됩니다. 람다식(Lambda expression)은 익명함수를 간단하게 표현하는 방법 중 하나입니다. 람다식은 함수를 정의할 때 함수의 이름이 필요 없으며, 간결한 문법으로 함수를 표현할 수 있습니다. 주로 함수를 다른 함수에 전달하거나 간단한 함수를 정의할 때 사용됩니다.

2023년 6월 6일
·
0개의 댓글
·
post-thumbnail

1급 객체란?

1급 객체(First-class Citizen)이란? 프로그래밍 언어에서 1급 객체의 의미는 다음과 같다 > 함수의 매개변수가 될 수 있다 > 함수의 결과로 반환될 수 있다 > 할당문의 대상이 될 수 있다 > 항목이 동일한지 테스트할 수 있다 C# 에서 C#의 경우 이 모든 조건을 충족하기 때문에 First Class Language라 한다 C#에서 함수는 대리자(Delegate)를 통하여 타입을 부여받고, 객체처럼 사용할 수 있다. 이렇게 객체로서 정의되면 프로그래밍 언어는 1급 함수를 갖게된다 표현한다 객체가 된 함수는 다른 함수에 인수로 전달 될 수 있고, 다른 함수에 의해 반환될 수 있으며, 변수에 값으로 할당할 수 있고 테스트 또한 가능해진다 개념의 이해를 위해 C언어를 예로 들면, C에서는 함수를 다른 함수에 인수로서 전달할 수 없다. 따라서 C에서는 함수를 2급 객체라 표현한다. 하지만 C#에서는 대리자를 통하여 다른 함수에 인수로서 전달하기 때문에 *

2023년 2월 5일
·
0개의 댓글
·

1급 객체[First-class citizen]란?

함수형 프로그래밍이 떠오르면서 1급 객체(First-class citizen)란 말을 많이 듣게 되는 것 같다. 1급 객체의 특징은 아래와 같다. 아래 1급시민의 3가지 조건을 충족하는 객체라면 1급객체 라고 할수 있다. > 1급 시민의 조건 3가지 변수나 데이타에 할당 할 수 있어야 한다. 객체의 인자로 넘길 수 있어야 한다. 객체의 리턴값으로 리턴 할수 있어야 한다. 주로 사용하고 있는 언어인 JAVA에서는, 함수가 1급 객체에 해당하지 않는다. Kotlin, JavaScript 등의 언어에서는 변수에 함수를 할당하고 사용할 수 있다. JAVA는 원래 불가능하지만 JAVA 8 부터는 위 언어들과 같은 1급 객체로의 취급이 가능해진다. > 예를 들어 JS는 변수에 함수를 할당 가능 > > > 그러나 자바는 불가능 BUT 익명 클래스 사용 하여 마치 함수를 넘기는 듯한 역할을 부여할 수 있음 또한 Lamb

2022년 9월 1일
·
0개의 댓글
·

First Class Citizen

First Class Citizen(1급 객체)에 대해서 알아보쟈🙌 함수나 클로져를 공부하며 자주 나오는 내용인 First Class Citizen을 알아보도록 한다. First Class Citizen? Swift는 함수형 프로그래밍 패러다임을 따르는 언어이다. 함수형 프로그래밍에서 함수는 First Class Citizen이며, 아래의 조건에 만족해야 한다. First Class Citizen이 뭐냐? 함수가 짱짱쌔다 조건 객체가 런타입에도 생성할 수 있어야 한다. 객체를 인자 값으로 전달할 수 있어야 한다. 객체를 반환 값으로 사용할 수 있어야 한다. 데이터 구조 안에 저장할 수 있어야 한다. 이제 예제를 통해 왜 Swift가 함수형 패러다임을 따르고, 어떻게 함수가 위의 조건에 부합하는지 천천히 알아보자. 변수 or 상수에 함수 대입 결과를 확인하면, ![](https://velog.velcdn.com/images/si

2022년 7월 29일
·
0개의 댓글
·

[python 기초] 중첩함수

중첩함수, closure 와 decorator closure의 개념을 이해하려면 중첩함수부터 정리할 필요가 있겠다. 중첩함수는 함수 안에 함수가 있는 형태로, 외부함수+내부함수의 조합이다. 그리고 모든 내부함수는 외부함수의 메모리에 접근할 수 있다. 이 말은 즉 외부함수에서 갖고 있는 변수를 내부함수가 사용할 수 있다는 뜻이고, 외부함수의 메모리를 복사해서 소유한다는 의미이기도 하다. closure는 외부함수의 return값이 내부함수인 함수를 뜻하며, 중첩함수의 하위 개념이다. closure는 해당 함수의 환경을 저장하기 때문에, 외부함수가 종료되었어도 내부함수 및 non-local 변수는 그 안에서 유효하다. (외부함수가 실행되는 시점에, non-local 변수는 복사 후 closure 속성에 저장된다) python을 작성할 때, global 변수는 최대한 사용하지 않는 것이 좋다. 모두가 접

2022년 3월 8일
·
0개의 댓글
·
post-thumbnail

일급객체함수(first-class citizen)

First-class citizen 자바스크립트에도 특별한 대우를 받는 `일급 객체(first-class citizen)`가 있다. 대표적인 일급 객체 중 하나가 함수이다. 자바스크립트에서 함수는 아래와 같이 특별하게 취급된다. 함수를 변수에 할당할 수 있기 때문에, 함수를 배열의 요소나 객체의 속성값으로 저장할 수 있다. 변수에 함수를 할당하는 경우 `` 아래는 변수 i에 함수를 할당하는 함수 표현식이다. 자바스크립트에서 함수는 일급 객

2021년 9월 14일
·
0개의 댓글
·

JavaScript 고차 함수(Higher-Order Function)

일급 객체 (First-class citizen/object) JavaScript에선 함수를 일급 객체로 취급한다. 이는 다른 자료형(string, float, array 등)과 마찬가지로 함수 역시 변수(variable)로 받고 리턴할 수 있는 뜻이다. 새로운 변수에 함수를 할당도 가능하다. 위처럼 긴 이름을 가진 함수를 새로운 변수로 선언할 수도 있다. 변수로 설정할 때는 괄호를 빼고 선언해야하는데 이는 함수 자체를 변수로 선언하기 때문이다. 괄호를 넣고 선언을 하면 함수를 실행한 값을 변수로 선언하는 것이기 때문에 함수 자체를 변수로 선언할 떄는 괄호를 빼야한다. 함수는 객체이기 때문에, 과 같은 메소드를 사용할 수 있다. 고차 함수 (Higher-order function) 함수는 일급 객체로 다른 자료형과 같아 함수 또한 다른 함수의 매개변수(parameter)로 전달과 결과로 리턴이 가능하다. 고차 함수는 하나의 함수가 다른 함수를 매개변수로 받거나

2021년 2월 9일
·
0개의 댓글
·
post-thumbnail

TIL39: First Class Citizen

First Class Citizen : * Function* Assignment - 변수에 할당할 수 있다. Argument - 다른 함수의 인자로 전달될 수 있다. Return Value - 다른 함수의 결과로서 반환될 수 있다. >함수 정의 방법 Function Expression : 함수를 변수에 할당함으로써 함수를 표현 Function Declaration : 키워드를 이용하여 함수를 선언 함수 표현식과 함수 선언식의 결정적인 차이는 Hoisting의 적용 여부입니다. 선언식은 호이스팅이 적용되지만 표현식은 적용되지 않습니다. 다만 지나치게 선언식의 호이스팅에 의존하는 것은 유지 보수 측면에서 오히려 단점이 될 수 있습니다.(Declarative Programming, 선언적 프로그래밍) 반면에 표현식은 함수의 할당과 실행의 위치가 어느 정도 예측 가능하기 때문에 가독성이 좋지만 각 할당과 실행의

2020년 9월 26일
·
0개의 댓글
·
post-thumbnail

Python - First-class citizen

First-class citizen 파이썬 및 다른 프로그래밍 언어에 관해 보다보면 일급객체 / first-class citizen / first-class object 와 같은 말을 볼 수 있다. 일급객체란 > 변수나 데이터 구조에 넣을 수 있어야 한다 매개변수로 전달할 수 있어야 한다 return값으로 사용할 수 있어야 한다 위 조건들을 만족시킬 수 있는 객체를 말한다. 파이썬에서는 대표적으로 함수를 예로 들 수 있다. ex) 변수나 데이터 구조에 넣을 수 있어야 한다 testOne, testTwo 함수를 정의한 후에 front, back에 담아보았다. 실행 및 type판별을 해보면 front, back 변수가 각각 testOne, testTwo함수를 정상적으로 담아서 실행시켰고 type이 'function'으로 나타나는 걸 확인 할 수 있다. 매개변수로 전달할 수 있어야 한

2020년 8월 23일
·
0개의 댓글
·

[Javascript] 고차함수

고차함수 파트에서의 목표 일급 객체(first-class citizen)의 세 가지 특징을 설명할 수 있다. 고차 함수(higher-order function)에 대해 설명할 수 있다. 추상화(abstraction)에 대해 설명할 수 있다. 추상화의 관점에서 고차 함수가 갖는 이점에 대해 설명할 수 있다. 배열 메소드를 자연스럽게 사용할 수 있다. 고차 함수를 활용하여 프로그램을 작성할 수 있다. 일급객체(first-class citizen) 중 함수의 조건 변수에 할당(assignment)할 수 있다. 다른 함수의 인자(argument)로 전달될 수 있다. 다른 함수의 결과로서 리턴될 수 있다. 이는 함수를 데이터(string, number, boolean, array, object)를 다루듯이 다룰 수 있다는 걸 의미한다. 변수에 저장할 수 있기 때문에 배열의 요소나 객체의 속성값으로 저장하는 것도 가능하다. **변수에 저장

2020년 8월 14일
·
0개의 댓글
·
post-thumbnail

Python Decorator

데코레이터? 함수 내부의 코드를 직접 수정하는 대신 데코레이터를 사용해서 추가적인 처리를 하도록 해주는 디자인 패턴. 어디에 쓰나? 서버에 요청이 왔을 때 전처리, 후처리가 필요한 경우. 요청에 대한 로직을 처리하기 전 token 검증 특정 함수의 로직이 완료될 때까지의 시간 측정 반복되는 로직을 코드에 복사 붙여넣기하는 대신 함수 위에 데코레이션 first class citizen > 파이썬에서의 함수는 일급 객체다. 비행기를 타면 퍼스트 클래스에 탈 수 있다. function2를 호출할 때 function1을 인수로 넘기고 실행시킬 수 있다. 일급 객체의 특징은 객체를 변수에 할당하거나, 함수의 인수로 넘기거나, 반환(return)할 수 있다는 것이다. 함수 전, 후에 동작 추가 function1에 hello 객체를 인수로 넘겨주고 wrapper 변수는 wrapper 함수를 할당받는다. 이후 wrapper를 호출하면 "h

2020년 7월 3일
·
0개의 댓글
·