Skip to content

Instantly share code, notes, and snippets.

@uehaj
uehaj / test.groovy
Created May 8, 2014 21:37
multi method and Static groovy(TypeChecked, CompileStatic)
class Sample {
def test(String strParam) {
println "String = $strParam"
}
def test(Integer intParam) {
println "int = $intParam"
}
}
import org.codehaus.groovy.tools.groovydoc.GroovyDocTool
import org.codehaus.groovy.groovydoc.GroovyRootDoc
import static groovy.io.FileType.*
import org.codehaus.groovy.tools.groovydoc.*
includeTargets << grailsScript("Init")
/**
* Generate i18n messages.properties from the domain class comments.
* support version: grails-1.3.0 or above
/**
* Hindley-Milner type inference
* Ported to Groovy from Scala by Example Chapter 16 code.
* (http://www.scala-lang.org/docu/files/ScalaByExample.pdf)
* refered also
* https://github.com/namin/spots/blob/master/hindleyMilner/typeInference.scala
* Japanese page of 'Scala by Example':
* http://www29.atwiki.jp/tmiya/pages/78.html
*/
import groovy.transform.*
@uehaj
uehaj / applicative_optional.groovy
Last active December 29, 2015 01:09
Handle Optional as Applicative
import java.util.Optional;
ExpandoMetaClass.enableGlobally() //you need this to add method through EMC to Closure.
// see: http://jira.codehaus.org/browse/GROOVY-3674
Optional.metaClass.and = { Optional xs -> // Haskell's <*> (ap)
delegate.flatMap({Closure f->
xs.map({x->
if (f.parameterTypes.size() > 1) {
@uehaj
uehaj / Java8Groovy.groovy
Created November 21, 2013 21:22
Groovyから簡潔にOptionalを操作する例(an example of handling optional from groovy)
import java.util.Optional
class Java8Groovy {
void test() {
Optional<Integer> firstName = Optional.of("FirstName")
Optional<Integer> lastName = Optional.of("LastName")
Optional NULL = Optional.empty()
assert (lastName + " " + firstName).get() == "LastName FirstName"
assert (NULL + " " + firstName) == NULL
@uehaj
uehaj / turtle.fr
Created October 30, 2013 20:42
第12回オフラインリアルタイムどう書くの参考問題をFregeで解く ref: http://qiita.com/uehaj/items/0e0e7979b7e2b19e55f5
package sample.Turtle where
type Position = Char
type Direction = Char
type Command = Char
pure native elemIndex indexOf :: String -> Int -> Int
ewData :: String
ewData = "?"++packed ['A'..'K']++"?"++packed ['L'..'V']++"?"++packed ['W'..'Z']++packed ['a'..'g']++"?"
@uehaj
uehaj / diceState.hs
Created October 10, 2013 20:42
第12回オフラインリアルタイムどう書くの問題「サイコロを転がす」をHaskellで解く ref: http://qiita.com/uehaj/items/5f46b012f13e1d3cee55
-- http://nabetani.sakura.ne.jp/hena/ord12rotdice/
import Data.List
import Control.Monad.State
-- 1と2の向きで表わしたサイコロの方向の状態。NEは「1の目が北(N)、2の目が東(E)」を表わす。Uは上、Dは下を表わす。
data DiceState = NE|ES|SW|WN|EN|SE|WS|NW|UN|ND|DS|SU|NU|DN|SD|US|UE|ED|DW|WU|EU|DE|WD|UW deriving (Show, Eq)
-- それぞれのサイコロの状態で上面の数字(目)を表わす連想リスト。
deuce :: [(DiceState, Char)]
deuce = [(NE,'4'),(ES,'4'),(SW,'4'),(WN,'4'),(EN,'3'),(SE,'3'),
@uehaj
uehaj / shortest.fr
Created October 5, 2013 21:14
第13回オフラインリアルタイムどう書くの問題をFregeで解く ref: http://qiita.com/uehaj/items/60abb9be0dfac0755dcf
-- http://nabetani.sakura.ne.jp/hena/ord13blocktup/
data Cell = Wall | Empty | Water
derive Eq Cell -- Haskellのdata Cell = ... deriving(Eq)
-- セルを表示する
instance Show Cell where
show Wall = "*"
show Empty = " "
show Water = "+"

Untitled Slide

Welcome to Glide.

Glide is the easiest way to create useful slide for all of your Gists.

  • input key <- to go backward.
  • input key -> to go forward.

Publishing

@uehaj
uehaj / gist:6790753
Last active December 24, 2015 11:28
# 見出し h1
あいうえお
## 見出し h2
かきくけこ
### 見出し h3