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



