Posts

17 posts

FP - Basic concepts 정리

ryukato|2017년 2월 5일

Functional ProgrammingBasic ConceptsMathematical functions수학적으로 함수는 아래와 같이 표현할 수 있다. 아래와 같은 표현 및 개념은 실제로 Functional Programming에서 사용되며, 코드 작성 시에도 중요하게 사용된다. x -> f(x)f(x) = x*2f:X -> Yy = f(x)Side EffectDescription (or Definition)Application이 실행되는 환경(Ram, disk, IO etc…)내에서 정의되고 사용되는 객체 혹은 변수의 상태(혹은 값)이 변경되는 것을 의미한다.예를 들어, 아래와 같은 것들이 side effect일 수 있다. 변수의 값 변경디스크에 값을 쓰는 것사용자 interface에서 버튼

Scala Tutorial 번역 (XML Proccessing)

ryukato|2017년 1월 24일

XML ProcessingScala를 사용해서 쉽게 XML문서를 생성 및 파싱 그리고 처리할 수 있다. Scala에서 XML 데이터를 표현하는 방법은 아래와 같다. Generic data 표현 (xml 자체를 Scala코드처럼 사용할 수 있는 표현법으로 이해된다.)Data-specifi data 표현 (데이터에 초첨을 맞춘 표현법으로 이해된다.)아래와 같은 HTML(xml과 동일한 표기법이다)이 주어졌을때 이를 Scala 코드로 옮겨보자Runtime RepresentationHTML(XML) Hello XHTML world

Scala Tutorial 번역 (Singleton object, Companion)

ryukato|2017년 1월 22일

Singleton Objects Scala는 Java보다 좀 더 객체지향이라고 할 수 있다. 그 이유는 Scala는 static member를 가질 수 없기때문이다. static member대신에 singleton 객체를 제공한다.singleton 객체를 만들때 class키워드 대신 object키워드를 사용하여 정의 한다. singleton 객체는 new 키워드를 사용하여 인스턴스를 만들 수 없기때문에, 생성자에 인자들을 넘길 수 없다. 이것은 약간 자바랑 다를 수 있다. 자바에서는 singleton class정의시에 인자를 받을 수 있는 생성자를 정의할 수 있고, newInstance 혹은 createInstance등과 같은 static method를 통해 해당 생성자를 호출 할 수 있기 때문이다. (*

Scala Tutorial 번역 (Partially Applied Function)

ryukato|2017년 1월 20일

Partially Applied Functions직역을 하자면 부분 적용된 함수라고 할 수 있을 것이다. 정의한 함수를 호출할때, 보통 함수가 필요로 하는 인자들을 모두 넘겨주어야 함수를 정상적으로 호출할 수 있다. 이런 경우는 전체적으로 적용된 함수라고 할 수 있다. 그런데 스칼라에서는 일부 인자만을 주고 함수를 호출하게 되면, 나머지 인자를 받을 수 있는 함수를 반환해 줄 수 있다. 이것을 바로 Partially Applied Function이라고 한다. 그리고 그 반환된 함수에 나머지 인자를 주게 되면 함수의 본체(body)가 실행하게 된다. 아래의 예제들을 하나씩 살펴보면 좀 더 이해할 수 있을 것이다. Fully Applied Functionimport java.util.Date object

Scala Tutorial 번역 (Implicit Class)

ryukato|2017년 1월 16일

Implicit ClassImplicit Class는 클래스의 기본생성자(인자를 반드시 하나만 가지는)를 암묵적으로(“자동으로”라고 해석해도 될 듯하다.) 호출하여 준다. 확~ 와닿지는 않는 말이기때문에 바로 아래의 예제를 보는 것이 좋을 것 같다.object Test { implicit class ListToString[A](l : List[A]) { def listToStrJoinedBy(s: String): String = { l.map(e => e.toString).mkString(s) } } def main(args: Array[String]): Unit = { println(List(1,2,3,4) listToStrJoinedBy("|"