day 8. 코틀린의 함수형 프로그래밍

2021. 7. 28. 19:02·강의/부캠 안드로이드 학습정리

https://mangkyu.tistory.com/111

 

[프로그래밍] 함수형 프로그래밍(Functional Programming) 이란?

1. 함수형 프로그래밍(Functional Programming)에 대한 이해 [ 프로그래밍 패러다임(Programming Paradigm) ] 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를..

mangkyu.tistory.com

https://medium.com/@sket8993/kotlin-%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%B4%88%EA%B0%84%EB%8B%A8-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-4dbf36dfc9a7

 

[Kotlin]함수형 프로그래밍 초간단 이해하기

함수형 프로그래밍. 개발하다 보면 한 번쯤은 들어봤을 법한 말이다. 안 들어봤다 해도 지금 이 순간 봤으니 들어본 것이라 할 수 있다. 아무튼 일단 함수형 프로그래밍을 하기에 앞서 무엇인지

medium.com

 

위 두 사이트를 보니까 그냥 한줄로 잘 만든 map, lambda나 filter로써 파이썬에서 이미 사용하고 있었다.

RGB = [list(map(int, input().split())) for _ in range(N)]

신기한건 ::를 이용해 함수를 변수로 처리하고, 함수 안에 함수, 클래스 등 다 들어간다는 것. 일급객체로 만든다는 의지가 느껴진다.

 

 

같은 내용을 여러 다른 함수형 방법으로 작성한게 edwith에 올라왔는데 정말 정말 정말 정말 정말 정말 정말 정말 정말 좋은 것 같다. 저작권 문제때문에 못올림.

난 클로저 활용, 캡쳐변수랑 고차함수가 마음에 든다. 고차함수는 map, lambda, fold, reduce 등. fold랑 reduce 차이는 fold는 첫번째 값을 지정할 수 있음.

스코프 안에서 it은 { index -> index어쩌구 저쩌구.. } 할때의 -> 이 불편함을 그냥 { it어쩌구 저쩌구 } 로 해주는 역할. 알고보니 쉽다.

스코프 함수 시 스코프의 맨 마지막에 있는게 return 되는 값.

 

커링, 합성함수가 뭐지? 찾아봐야 할듯

커링은 함수 인자 2개 받는걸 return을 이용해 하나씩 받는걸로 바꾸는걸 말한다. 아렇게 바꾸면 f(x)f(y)처럼 진짜 수학식 처럼 나타낼 수 있는듯.

함성함수는 f(x)g(x)를 f(g(x))로.

https://itandhumanities.tistory.com/26

 

[코틀린을 다루는 기술] 코틀린 함수 정리

이 글은 길벗 사의 '코틀린을 다루는 기술' 을 읽으면서 정리한 포스팅입니다. 더 자세한 내용은 '코틀린을 다루는 기술' 책에서 찾아보시면 좋을 것 같습니다. 서론 디프만 8기에서 코틀린 스터

itandhumanities.tistory.com

https://zion830.tistory.com/102

 

코틀린을 다루는 기술 3장 정리 - 함수로 프로그래밍하기

코틀린을 다루는 기술 3장을 읽고 정리한 내용입니다. 요약된 표현이 많기에 보다 자세한 설명은 책을 통해 확인하실 수 있습니다. 개요 함수의 출력이 결정적이고, 외부 상태에 의존하지 않는

zion830.tistory.com

 

 

 

순수함수는 외부 변수를 사용하는 일 없이 오로지 함수 안에서 모든걸 해결하여 f(x) = y 이 사실은 어떠한 상황에서도 불변하게 만드는걸 말하는 것 같다. 즉 같은 입력값에 대해선 무조건 같은 결과값이 나와야 함. 이건 외부 변수 안쓰고 안에서 다 해결하면 되는 문제니까. 또한 같은 값이 나오더라도 외부 값을 변화시켜서도 안됨. 즉 아무것도 하지말고 그냥 값만 반환하라고.

함수 참조 너무 신박하다. 또 함수 참조를 보니 왜 커링을 하라는지 알겠다. 변수를 한개만 받도록 만들면 이런 여러 새로운 기술들을 쓸 수 있다.

http://www.yes24.com/Product/Goods/89564200

 

코틀린을 다루는 기술 - YES24

코틀린은 자바와 부드럽게 연동되는 우아한 JVM 언어로, 구글은 2019년부터 안드로이드에서 최우선 언어로 코틀린을 채택했다. 『코틀린을 다루는 기술』은 이해하기 쉽고 유지 보수하기 편하며

www.yes24.com

 

 

 


https://namget.tistory.com/entry/%EC%BD%94%ED%8B%80%EB%A6%B0%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-4%EC%9E%A5-%EA%B3%A0%EC%B0%A8%ED%95%A8%EC%88%98

 

[코틀린으로 배우는 함수형 프로그래밍] 4장 고차함수

안녕하세요 남갯입니다. 함수형프로그래밍에서는 함수를 객체처럼 다룬다. 고차함수를 통해 함수를 더 유연하게 다루는 방법에 대해 알아보고 고차함수의 장점을 살펴보자. 고차함수란? 코틀

namget.tistory.com

매개변수 넘겨줄 때 함수를 변수처럼 정의했으니 함수를 매개변수로 넘겨줄 수도 있다.

 

        // 커링을 사용한 형태로 변경. 더 다양한 표현식으 만들 수 있다.
        val isFactor: (Int) -> (Int) -> Boolean = {num ->
            { i->
                num%i==0
            }
        }

 

나도 apply 가 뭔지 알아내서 사용해봐야 할 것 같다.

if, else if, else if, ... 대신 when을 써서 더 간단하게 할 수 있다. 아님 대괄호 없이 한줄로도 표현 가능. 또는 fold를 써서 고급스럽게 할 수도 있다.

    print((2..100).fold(""){
            print, i -> print + "$i : " +
            (if(isAbundant(i))"abundant, " else "") +
            (if(isDeficient(i))"deficient, " else "") +
            (if(isPerfect(i))"perfect" else "") +
            (if(isSquared(i))"squared" else "") +
            (if(isPrime(i))"prime" else "") + "\n"
    })
var resultAboutNum: (Int) -> String = {
    val numAlpha = ClassifierAlpha(it)

    "$it : " + when {
        numAlpha.isPerfect() -> "perfect, "
        numAlpha.isAbundant() -> "abundant, "
        else -> "deficient, "
    } + when {
        numAlpha.isPrime() -> "prime"
        numAlpha.isSquared() -> "squared"
        else -> ""
    }
}

변수 정의하고 하는 식으로 좀 복잡한거 안쓰면 대괄호 대신 소괄호 쓰는게 나은듯.

 

intelliJ에서 컴파일한걸 역컴파일하는 기능을 제공해준다. 보는것도 좋은듯.

'강의 > 부캠 안드로이드 학습정리' 카테고리의 다른 글

day 11. 멀티프로세스, 멀티스레드, 우선순위  (0) 2021.08.02
day 9. git 저장소 만들기  (0) 2021.07.29
day 7 클래스 상속  (0) 2021.07.27
day 6 xml, html parser 만드는데 너무 어려웠음  (0) 2021.07.27
day4. 공간 할당의 어려움..  (0) 2021.07.22
'강의/부캠 안드로이드 학습정리' 카테고리의 다른 글
  • day 11. 멀티프로세스, 멀티스레드, 우선순위
  • day 9. git 저장소 만들기
  • day 7 클래스 상속
  • day 6 xml, html parser 만드는데 너무 어려웠음
용나리
용나리
  • 용나리
    티스토리 블로그
    용나리
  • 전체
    오늘
    어제
    • 분류 전체보기 (333)
      • 과거의 것들 (93)
        • AI Tech boostcamp (92)
      • 생각정리(고찰) (2)
      • 기술 글 (0)
      • 코딩테스트 (4)
        • C++ (0)
        • Python (4)
      • CS (121)
        • 컴퓨터 시스템 (4)
        • 코틀린 인 액션 (13)
        • 김영한 스프링 강의 (104)
      • 일지 남기기용 (11)
        • 운동 (10)
      • 개발 배포 해보기 (1)
      • 프로그래밍 언어 및 기타 (32)
        • Spring Boot (9)
        • Python (9)
        • Kotlin (1)
        • Flutter (2)
        • SQL (4)
        • Docker (3)
        • 공통 (4)
      • os (4)
        • Linux (4)
      • 기술 (17)
        • PyTorch (6)
        • Computer Vision (6)
        • NLP (1)
        • 기타 (4)
      • 제품 후기 (0)
      • 게임 (0)
        • Human Resource Machine (0)
      • 강의 (26)
        • fullstackdeeplearning_sprin.. (9)
        • 부캠 안드로이드 학습정리 (17)
      • 개인 메모 (10)
      • IT 기타 (5)
      • 논문 읽기 연습 (5)
        • Computer Vision (1)
        • NLP (0)
        • 공통 (2)
        • 그냥 메모 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pip install killed
    파이썬 실행경로
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
용나리
day 8. 코틀린의 함수형 프로그래밍
상단으로

티스토리툴바