Replies: 5 comments
-
파트 1. 함수형 프로그래밍(FP) 소개1️⃣ 함수형 프로그래밍(FP)란? 2️⃣ 함수형 프로그래밍가 재조명받는 이유? 3️⃣ 함수형 프로그래밍은 OOP를 대체할 수 있다? (O/X) ❌ 4️⃣ 다음 중 함수형 프로그래밍의 특징이 아닌 것은? 5️⃣ OOP(객체지향 프로그래밍)와 FP(함수형 프로그래밍)의 차이점을 2가지 이상 설명해보세요
파트 2. [실습] 함수를 다루는 기술들1️⃣ Swift에서 함수는 1급 객체이다. (O/X) ⭕️ 2️⃣ 아래 코드를 보고, 출력되는 결과를 예측해보세요. Hello, world ! 3️⃣ 순수 함수는 외부 상태를 참조하지 않아야 한다. (O/X) ⭕️ 4️⃣ 다음 중 고차 함수(Higher-Order Function)에 해당하는 것은? 5️⃣ 다음 for 루프를 고차 함수(map) 로 변환하세요. let numbers = nums.map { $0 * $0 } 6️⃣ let compose1 = { double(increment($0)) }
let compose2 = { increment(double($0)) }
print(compose1(5))
print(compose2(5))
// 결과
12
11 7️⃣ 커링은 여러 인자를 받는 함수를, 하나의 인자만 받는 함수들의 체인으로 바꾸는 기법이다. (O/X) ⭕️ 8️⃣ 함수 합성(Composition)의 개념을 설명하고, 실무에서 함수 합성이 적용될 수 있는 예시를 들어보세요.
func request() async throws {
let (data, response) = try await URLSession.shared.data(from: URL(string: "")!)
let userIDs = data
.decoded(as: [User].self)?
.filter { $0.isValid }
.map { $0.extractID }
}
struct User: Decodable {
let id: String
let pw: String
}
extension User {
var isValid: Bool {
return self.pw.count > 8
}
var extractID: String {
return self.id
}
}
extension Data {
func decoded<T: Decodable>(as type: T.Type) -> T? {
try? JSONDecoder().decode(T.self, from: self)
}
} 엄격하게 전통적인 함수 함성을 지키면 아래와 같은 코드 스타일이라고한다 by GPT4o let decodeUser: (Data) -> User? = { data in
data.decoded(as: User.self)
}
// 2. filter
let validateUser: (User?) -> User? = { optionalUser in
optionalUser.map { $0 }
}
// 3. extract
let extractUsername: (User?) -> String? = { optionalUser in
optionalUser.map { $0.id }
}
infix operator >>> : AdditionPrecedence
func >>> <A, B, C>(
_ f: @escaping (A) -> B,
_ g: @escaping (B) -> C
) -> (A) -> C {
return { x in g(f(x)) }
}
let handle: (Data) -> String? =
decodeUser
>>> validateUser
>>> extractUsername
func request() async throws {
let url = URL(string: "https://example.com/user.json")!
let (data, _) = try await URLSession.shared.data(from: url)
let username = handle(data)
print(username ?? "유효하지 않은 유저")
} 함수형 책 문제1️⃣ 지연 평가는 계산 결과를 미리 구하지 않고, 실제로 필요할 때까지 계산을 미룬다. (O/X) ⭕️ 2️⃣ 지연 평가가 유용한 상황으로 가장 적절한 것은? 3️⃣ 아래 Swift 코드를 실행했을 때 출력 결과는 ? let numbers = (1...10).lazy
.map { num -> Int in
print("map: \(num)")
return num * 2
}
.filter { num -> Bool in
print("filter: \(num)")
return num > 10
}
if let result = numbers.first {
print("Result: \(result)")
} map: 1
filter: 2
map: 2
filter: 4
map: 3
filter: 6
map: 4
filter: 8
map: 5
filter: 10
map: 6
filter: 12
map: 6
Result: 12 4️⃣ 지연 평가(Lazy Evaluation)의 장점과 단점을 각각 하나씩 설명해보세요.
|
Beta Was this translation helpful? Give feedback.
-
파트 1. 함수형 프로그래밍(FP) 소개1️⃣ 함수형 프로그래밍(FP)란? 2️⃣ 함수형 프로그래밍이 재조명받는 이유? 3️⃣ 함수형 프로그래밍은 OOP를 대체할 수 있다? (O/X) ❌ 4️⃣ 다음 중 함수형 프로그래밍의 특징이 아닌 것은? 5️⃣ OOP(객체지향 프로그래밍)와 FP(함수형 프로그래밍)의 차이점을 2가지 이상 설명해보세요
파트 2. [실습] 함수를 다루는 기술들1️⃣ Swift에서 함수는 1급 객체이다. (O/X) ⭕ 2️⃣ 아래 코드를 보고, 출력되는 결과를 예측해보세요. func greet(_ name: String) -> String {
return "Hello, \(name)"
}
let greeter: (String) -> String = greet
print(greeter("world !"))
3️⃣ 순수 함수는 외부 상태를 참조하지 않아야 한다. (O/X) ⭕ 4️⃣ 다음 중 고차 함수(Higher-Order Function)에 해당하는 것은? 5️⃣ 다음 for 루프를 고차 함수(map) 로 변환하세요. let nums = [1, 2, 3]
var squared: [Int] = []
for num in nums {
squared.append(num * num)
}
// 결과
let squared = nums.map { $0 * $0 } 6️⃣ double과 increment를 조합하여 하나의 함수로 만들고, 5를 적용해 결과를 출력하세요. func double(_ x: Int) -> Int {
return x * 2
}
func increment(_ x: Int) -> Int {
return x + 1
}
// 결과
func composition(_ double: @escaping (Int) -> Int, _ increment: @escaping (Int) -> Int) -> (Int) -> Int {
return { x in
double(increment(x))
}
}
let result = composition(double(_:), increment(_:))
print(result(5)) 7️⃣ 커링은 여러 인자를 받는 함수를, 하나의 인자만 받는 함수들의 체인으로 바꾸는 기법이다. (O/X) ⭕ 8️⃣ 함수 합성(Composition)의 개념을 설명하고, 실무에서 함수 합성이 적용될 수 있는 예시를 들어보세요. 함수형 책 문제1️⃣ 지연 평가는 계산 결과를 미리 구하지 않고, 실제로 필요할 때까지 계산을 미룬다. (O/X) 2️⃣ 지연 평가가 유용한 상황으로 가장 적절한 것은? 3️⃣ 아래 Swift 코드를 실행했을 때 출력 결과는 ? let numbers = (1...10).lazy
.map { num -> Int in
print("map: \(num)")
return num * 2
}
.filter { num -> Bool in
print("filter: \(num)")
return num > 10
}
if let result = numbers.first {
print("Result: \(result)")
} 4️⃣ 지연 평가(Lazy Evaluation)의 장점과 단점을 각각 하나씩 설명해보세요. |
Beta Was this translation helpful? Give feedback.
-
파트 1. 함수형 프로그래밍(FP) 소개1️⃣ 함수형 프로그래밍(FP)란? 2️⃣ 함수형 프로그래밍가 재조명받는 이유? 3️⃣ 함수형 프로그래밍은 OOP를 대체할 수 있다? X 4️⃣ 다음 중 함수형 프로그래밍의 특징이 아닌 것은? 5️⃣ OOP(객체지향 프로그래밍)와 FP(함수형 프로그래밍)의 차이점을 2가지 이상 설명해보세요.
파트 2. [실습] 함수를 다루는 기술들1️⃣ Swift에서 함수는 1급 객체이다. O
2️⃣ 아래 코드를 보고, 출력되는 결과를 예측해보세요.
3️⃣ 순수 함수는 외부 상태를 참조하지 않아야 한다. O 4️⃣ 다음 중 고차 함수(Higher-Order Function)에 해당하는 것은? 5️⃣ 다음 for 루프를 고차 함수(map) 로 변환하세요.
6️⃣ double과 increment를 조합하여 하나의 함수로 만들고, 5를 적용해 결과를 출력하세요.
7️⃣ 커링은 여러 인자를 받는 함수를, 하나의 인자만 받는 함수들의 체인으로 바꾸는 기법이다. O 8️⃣ 함수 합성(Composition)의 개념을 설명하고, 실무에서 함수 합성이 적용될 수 있는 예시를 들어보세요. 함수형 책 문제1️⃣ 지연 평가는 계산 결과를 미리 구하지 않고, 실제로 필요할 때까지 계산을 미룬다. (O/X) 2️⃣ 지연 평가가 유용한 상황으로 가장 적절한 것은? 3️⃣ 아래 Swift 코드를 실행했을 때 출력 결과는 ?
4️⃣ 지연 평가(Lazy Evaluation)의 장점과 단점을 각각 하나씩 설명해보세요. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
파트 1. 함수형 프로그래밍(FP) 소개
파트 2. [실습] 함수를 다루는 기술들
함수형 책 문제
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
파트 1. 함수형 프로그래밍(FP) 소개
1️⃣ 함수형 프로그래밍(FP)란?
2️⃣ 함수형 프로그래밍가 재조명받는 이유?
3️⃣ 함수형 프로그래밍은 OOP를 대체할 수 있다? (O/X)
4️⃣ 다음 중 함수형 프로그래밍의 특징이 아닌 것은?
① 불변성(Immutable) 유지
② 상태(State) 변경 최소화
③ 객체지향 상속을 적극 활용
④ 순수 함수 사용
5️⃣ OOP(객체지향 프로그래밍)와 FP(함수형 프로그래밍)의 차이점을 2가지 이상 설명해보세요
파트 2. [실습] 함수를 다루는 기술들
1️⃣ Swift에서 함수는 1급 객체이다. (O/X)
2️⃣ 아래 코드를 보고, 출력되는 결과를 예측해보세요.
3️⃣ 순수 함수는 외부 상태를 참조하지 않아야 한다. (O/X)
4️⃣ 다음 중 고차 함수(Higher-Order Function)에 해당하는 것은?
① map
② print
③ if 문
④ for 반복문
5️⃣ 다음 for 루프를 고차 함수(map) 로 변환하세요.
6️⃣
double
과increment
를 조합하여 하나의 함수로 만들고, 5를 적용해 결과를 출력하세요.7️⃣ 커링은 여러 인자를 받는 함수를, 하나의 인자만 받는 함수들의 체인으로 바꾸는 기법이다. (O/X)
8️⃣ 함수 합성(Composition)의 개념을 설명하고, 실무에서 함수 합성이 적용될 수 있는 예시를 들어보세요.
9️⃣ 다음 for 문을 고차 함수(map, reduce 등) 을 활용하여 변환해보세요.5번과 중복이라 제거함수형 책 문제
1️⃣ 지연 평가는 계산 결과를 미리 구하지 않고, 실제로 필요할 때까지 계산을 미룬다. (O/X)
2️⃣ 지연 평가가 유용한 상황으로 가장 적절한 것은?
① 반복문을 빠르게 실행할 때
② 무한한 값을 즉시 출력할 때
③ 조건이 항상 true인 필터링
④ 대용량 데이터 중 일부만 필요할 때
3️⃣ 아래 Swift 코드를 실행했을 때 출력 결과는 ?
4️⃣ 지연 평가(Lazy Evaluation)의 장점과 단점을 각각 하나씩 설명해보세요.
Beta Was this translation helpful? Give feedback.
All reactions