新しく 2.10 から(?) dependent method types っていう機能が Scala に入るらしいので、最新版をゴニョゴニョしてみた。
2.9.1で同じことやろうとすると def withFoo(foo: Foo): foo.Bar = foo.f という部分がコンパイル通らないはず。fooという 引数 の抽象型であるBarに依存した型だからっていう感じ?
しかし、機能の概念はなんとなくぼんやりと、把握はできたが、まだどういったときに役に立つのかわかっていない(・ω・`)
| {-# LANGUAGE PatternGuards #-} | |
| {-# LANGUAGE ViewPatterns #-} | |
| module ViewPatterns where | |
| import Data.List | |
| data EMail = EMail User Domain deriving Show | |
| type User = String | |
| type Domain = String | |
| view :: String -> Maybe EMail |
| githubへ登録 | |
| =========== | |
| git remote add origin [email protected]:<username>/<application_name>.git | |
| git push origin master | |
| 初期設定 | |
| ======= | |
| git config --global user.name "Foo Bar" | |
| git config --global user.email "[email protected]" |
| import java.io.File | |
| import sbt._ | |
| import de.element34.sbteclipsify._ | |
| class Project(info: ProjectInfo) extends ParentProject(info) with IdeaProject { | |
| //lazy val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository" | |
| lazy val geotoolsRepository = "Open Source Geospatial Foundation Repository" at "http://download.osgeo.org/webdav/geotools/" | |
| lazy val javanetRepository = "Java.net Repository" at "http://download.java.net/maven/2" | |
| lazy val iglootoolsRepository = "Iglootools Releases Repository" at "http://developers.sirika.com/maven2/releases/" |
| object SourceCode{ | |
| val browser = """ "C:\Documents and Settings\scalaちゃん\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" """ | |
| val srcURL = "https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_8_1_final/src//library/" | |
| def apply(clazz:Class[_]){ | |
| val url = srcURL + clazz.getName.replace('.','/') + ".scala#L1" | |
| package code.webapp | |
| import scala.collection.JavaConversions.seqAsJavaList | |
| import org.apache.wicket.behavior.AttributeAppender | |
| import org.apache.wicket.datetime.markup.html.form.DateTextField | |
| import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator | |
| import org.apache.wicket.markup.html.basic.{ MultiLineLabel, Label } | |
| import org.apache.wicket.markup.html.form.{ TextField, TextArea, SubmitLink, RadioGroup, Radio, PasswordTextField, FormComponent, Form, DropDownChoice, CheckGroup, Button } | |
| import org.apache.wicket.markup.html.link.{ Link, BookmarkablePageLink } | |
| import org.apache.wicket.markup.html.link.ExternalLink |
| class Respond extends Service[Request, Response] with Logger { | |
| def apply(request: Request) = { | |
| try { | |
| request.method -> Path(request.path) match { | |
| case GET -> Root / "todos" => Future.value { | |
| val data = Todos.allAsJson | |
| debug("data: %s" format data) | |
| Responses.json(data, acceptsGzip(request)) | |
| } | |
| case GET -> Root / "todos" / id => Future.value { |
新しく 2.10 から(?) dependent method types っていう機能が Scala に入るらしいので、最新版をゴニョゴニョしてみた。
2.9.1で同じことやろうとすると def withFoo(foo: Foo): foo.Bar = foo.f という部分がコンパイル通らないはず。fooという 引数 の抽象型であるBarに依存した型だからっていう感じ?
しかし、機能の概念はなんとなくぼんやりと、把握はできたが、まだどういったときに役に立つのかわかっていない(・ω・`)
| List(1,2,3,1).zip(List(1,1,1,1)).foldLeft(Map[Int,Int]()) { (x, y) => x.get(y._1) match { case Some(v) => x + Pair(y._1, (v + y._2)) case None => x + y }} |
| def eith[R](arg: Either[Throwable, Any] ) : R = { | |
| arg match { | |
| case Left(e) => throw e | |
| case Right(o:Either[Throwable, Any]) => eith(o) | |
| case Right(o:R) => o | |
| } | |
| } |
| def connect = { | |
| log("connect") { // connect start | |
| // ... 何かの処理 ... | |
| log("login") { // connect : login start | |
| // ... 何かの処理 ... | |
| } // connect : login end | |
| // ... 何かの処理 ... | |
| } // connect end | |
| } |