분류 전체보기

대수적 자료형이란?대수적 자료형(Algebraic Data Types, ADT)이란 다른 타입의 결합으로 만들어지는 합성 타입을 말하며, 이러한 합성 타입은 수학적인 합(sum)과 곱(product)의 개념을 조합해서 만들어지게 됩니다.곱타입(product)은 여러 값을 함께 가지며(AND를 뜻합니다) 대표적인 예시로 튜플(tuple)이나 우리가 평소에 객체지향적으로 프로그래밍하면서 만들게 되는 class 같은 자료형의 모음이 있습니다.합타입(sum)은 타입의 모음 중 하나에만 속하게 되는 타입을 말하고(OR을 뜻합니다) 대표적인 예시로 enum class, sealed trait(interface) 같은 조합이 있습니다. 곱타입(product)과 합타입(sum)곱타입(product)곱타입은 개요에서 설..
· Java/언어
Java에서는 문자열을 다루는 객체로 String, StringBuilder, StringBuffer의 세 가지 클래스를 제공해줍니다.이 글에서는 이 세 가지 클래스의 차이를 개념적으로 이해하고, 언제 어떤 클래스를 선택해야 할지에 대한 가이드를 작성해볼 것입니다. String: 불변(immutable)한 문자열 String은 가장 기본적으로 사용되는 문자열 클래스입니다. 중요한 특징은 불변(immutable) 이라는 점입니다. 한 번 생성된 String 객체는 내용을 바꿀 수 없습니다.String의 내부 구현을 보면 값을 저장하고 있고, 이 값은 final로 지정되어 있어 불변의 특성을 지니게 됩니다.public final class String implements java.io.Serializable..
이전에 설명한 functor 글을 읽어보시면 더욱 도움이 됩니다.여기서도 샘플 코드는 kotlin으로 작성합니다.오류에 대한 정정이나 의견은 언제든지 환영합니다. Option 타입은 일반적으로 Some, None의 두 타입으로 정의됩니다.Some은 값이 존재할 경우의 타입이고 None은 값이 존재하지 않을 경우의 타입입니다.sealed class Option { data object None : Option() data class Some(val value: A) : Option} Java의 Optional은 위에서 적은 것과 같이 타입으로 구분되지 않고, isPresent(), isEmpty() 같은 함수를 통해 Some, None을 구분한다고 이해할 수 있습니다.val t = Optional.of..
kotlin이나 scala를 사용한다면 굉장히 익숙한 함수로 array나 list, map 등의 class에 구현되어 있는 map 함수가 있습니다.이 map 함수를 잘 몰라도 대강 내부 원소를 A 에서 B로 변환해주는구나 정도로 이해하고 사용해도 상관 없습니다만 이게 어떤 함수인지 알아야 더 잘 사용할 수 있으니 최대한 도움이 될 정도로 정리해보겠습니다.코드는 kotlin으로 작성할 예정이고 어떤 피드백이든 환영합니다.Functor와 map범주론에서 함자(函子, 영어: functor)는 두 범주 사이의 함수에 해당하는 구조로, 대상을 대상으로, 사상을 사상으로 대응시킨다. 함자는 작은 범주의 범주의 사상으로 볼 수 있다.- wikipediamap은 원래 카테고리 이론의 Functor 에서 유래된 함수입니..
원문: Scala Collections API - An Overview of the Collections API Traversable (Scala 3에서는 지원하지 않습니다)    Iterable        Seq            IndexedSeq                immutable.Vector                mutable.ResizableArray (2.13에서 제거되었습니다)                mutable.ArraySeq                mutable.StringBuilder                (String, Array - 2.13에서는 ArraySeq)            LinearSeq                immutable.Lis..
원문: Mutable and Immutable Collections Scala 컬렉션은 시스템적으로 변경 가능한 컬렉션과 변경 불가능한 컬렉션을 구분합니다. 변경 가능한 컬렉션은 현재 위치에서 업데이트되거나 확장될 수 있습니다. 즉, 컬렉션의 요소를 변경하거나 추가하거나 제거하는 작업을 부수 효과로서 이룰 수 있습니다. 반면에, 변경 불가능한 컬렉션은 절대로 변하지 않습니다. 당신에게는 요소를 추가하거나 제거 또는 갱신하는 연산이 주어지지만, 이러한 연산은 항상 새로운 컬렉션을 반환하고 기존의 컬렉션은 변하지 않은 채로 유지시킵니다. 모든 컬렉션 클래스는 scala.collection 패키지 또는 이의 하위 패키지인 mutable, immutable, generic 패키지에 위치해 있습니다. 대부분의 컬..
원문: Scala 2.8 Collections APIThe Scala 2.8 Collections APIMartin Odersky, Lex Spoon2010년 9월 7일 많은 이들이 보기에 Scala 2.8에서 가장 중요한 변화는 바로 새로운 컬렉션 프레임워크입니다. Scala는 이미 이전에도 컬렉션을 가지고 있었습니다(사실, 새 프레임워크는 기존 컬렉션과 대부분 호환됩니다). 그러나 다양한 컬렉션 타입을 위한 공통적이고 일관적이며 포괄적인 프레임워크는 오직 2.8에서만 제공됩니다. 컬렉션에 추가된 내용은 처음 보았을때는 다소 미묘해 보이지만, 이 변화는 여러분의 프로그래밍 스타일에 깊은 영향을 미칠 수 있습니다. 실제로 마치 프로그램의 기본 구성 요소가 개별 요소가 아니라 전체 컬렉션인 것처럼 더 높은..
https://www.scala-lang.org/docu/files/collections-api/collections.html 이전에 Effective Scala를 번역하면서 Collections에서 소개했던 Collections API 문서를 번역합니다.Scala 언어의 개발자인 Martin Odersky 교수님이 적은 문서로, Scala Collections를 설계한 이유와 원리, 그리고 사용법을 소개하는 문서입니다.Scala 문서들은 대부분 훌륭하지만 언어의 장벽으로 인해 도전해보기 힘든 것 같습니다.어떤 식으로든 코멘트는 환영하니 편하게 댓글로 달아주세요.(이미지는 ChatGPT로 제작되었습니다) 참고: https://sleeping-toy.tistory.com/30 Effective Scala ..
sleeptoy
'분류 전체보기' 카테고리의 글 목록