éå»1é±éã«ããåã ã¡ãæåããã10åã®<MY_LANGUAGE>ã®ã¯ã³ã©ã€ããŒããšããã¿ã€ãã«ã§ããã€ãã®ãããã¯ãç»å ŽããŸããã ãããã翻蚳ããæ¯èŒã®ããã«1ã€ã®ãããã¯ã«å
¥ããããšã«ããŸããã å
šäœã®æ³¢ã¯Scalaã§å§ãŸããŸããã
ãããè¡ããïŒ
ã¹ã«ã©
ãããã¯ãããªãã®å人ãå€å女æ§ãããæåãããScalaèšèªã®åã瀺ã10ã®ã¯ã³ã©ã€ããŒã§ã:)ã ãŸããé¢æ°åããã°ã©ãã³ã°ãšScalaæ§æã䜿çšãããã°ãããäŸã§ããããŸããããããã¯ããç¥ããªããããããŸããã å®éã®äŸãèŠã以å€ã«ããããç 究ããããè¯ãæ¹æ³ã¯ãªããšæããŸãã
ãªã¹ãå
ã®åã¢ã€ãã ã2åã«ããŸãã
map
é¢æ°ã¯ããªã¹ãã®åèŠçŽ ãåãåãã察å¿ããé¢æ°ãããã«é©çšããŸãã ãã®äŸã§ã¯ãåèŠçŽ ãååŸããŠ2åããŸãããã®çµæã foldLeft
ãšfoldLeft
ã䜿çšããä»ã®äŸãšã¯ç°ãªãããªã¹ã以å€ã®å€ã1ã€ã ãè¿ãã®ãšã¯ç°ãªããåããµã€ãºã®ãªã¹ããè¿ãããŸãã (1 to 10) map { _ * 2 }
å
ã®èšäºã®è§£èª¬ã§ã¯ããªãã·ã§ã³ãææ¡ãããŸããã (1 to 10) map (2*)
ãªã¹ãå
ã®ãã¹ãŠã®æ°åãèŠçŽããŸãã
reduceLeft
ã®æãäžè¬çãªäœ¿çšäŸã¯ããªã¹ãå
ã®æ°å€ã®åèšã§ãã ãã®äŸã§ã¯ãto rangeé¢æ°to
䜿çšããŠ1ãã1000ãŸã§ã®æ°å€ãåèšããŠãæ°å€ã®ã·ãŒã±ã³ã¹to
äœæããå埩ãšåèšã®ããã«reduceLeft
to
äœæããŸãã (1 to 1000).reduceLeft( _ + _ )
å
ã®èšäºã«å¯Ÿããã³ã¡ã³ãã§ãæé©ãªãªãã·ã§ã³ãææ¡ãããŸããã
(1 to 1000).sum
éšåæååã®åºçŸã®ç¢ºèª
ãã®äŸã§ã¯ããªã¹ãã®åèªãæå®ãããæååã«ããå ŽåãããŒã«å€ãè¿ããŸãã ãã®äŸã䜿çšããŠããã€ãŒãã«èå³ã®ããåèªãå«ãŸããŠããããšã確èªããŸããã ã¯ããæè¡çã«ã¯ãããã¯3è¡ã§ãããæåã®2è¡ã¯åãªãå€æ°ã®ä»äºã§ãã val wordlist = List("scala", "akka", "play framework", "sbt", "typesafe") val tweet = "This is an example tweet talking about scala and sbt." (words.foldLeft(false)( _ || tweet.contains(_) ))
å
ã®èšäºã«å¯Ÿããã³ã¡ã³ãã§ãæé©ãªãªãã·ã§ã³ãææ¡ãããŸããã
... wordList.exists(tweet.contains(_))
ãã¡ã€ã«ããèªã¿åã
ãã®äŸã¯ãJavaã®èæ¯ã«å¯ŸããŠå°è±¡çã§ãã1è¡ã§ãã¡ã€ã«ãèªã¿åãéåžžã«äžè¬çãªäŸã§ãã å®éã«ã¯2ã€ã®äŸããããŸãã1ã€ã¯ãã¡ã€ã«å
šäœãæååã«èªã¿èŸŒã¿ããã1ã€ã¯ãã¡ã€ã«ã1è¡ãã€ãªã¹ãã«èªã¿èŸŒã¿ãŸãã val fileText = io.Source.fromFile("data.txt").mkString val fileLines = io.Source.fromFile("data.txt").getLines.toList
ãèªçæ¥ããã§ãšã
ãHapy Birthdayããšããæã衚瀺ããã¯ã³ã©ã€ããŒã ããã¯ãScalaã®äžé
æŒç®åãšã map
ãšforeach
çµã¿åããã瀺ããŠãmap
ã (1 to 4).map { i => "Happy Birthday " + (if (i == 3) "dear NAME" else "to You") }.foreach { println }
çªå·ãªã¹ãã®ãã£ã«ã¿ãªã³ã°
partition
ã®äœ¿çšã«åºã¥ããŠãæ°å€ã®ãªã¹ãã2ã€ã®ã«ããŽãªã«ãã£ã«ã¿ãŒããŸãã ãã®äŸã§ã¯ããã¹ãã®çµæã«åºã¥ããŠ2ã€ã®åŠçãªã¹ããäœæãããŸãã val (passed, failed) = List(49, 58, 76, 82, 88, 90) partition ( _ > 60 )
WebãµãŒãã¹ããã®XMLã®ååŸãšè§£æ
XMLã¯Scalaã®ãã€ãã£ããã¬ãŒã ã¯ãŒã¯ã§ãããããXMLã®è§£æã¯ç°¡åã§ãã Twitteræ€çŽ¢ãã£ãŒããååŸããäŸã次ã«ç€ºããŸãã val results = XML.load("http://search.twitter.com/search.atom?&q=scala")
ãªã¹ãå
ã®æå°ïŒãŸãã¯æ倧ïŒãæ€çŽ¢ããŸã
reduceLeft
ã䜿çšããŠãªã¹ããå埩åŠçããé¢æ°ãé©çšããreduceLeft
2ã€ã®äŸã List(14, 35, -7, 46, 98).reduceLeft ( _ min _ ) List(14, 35, -7, 46, 98).reduceLeft ( _ max _ )
å
ã®èšäºã«å¯Ÿããã³ã¡ã³ãã§ãæé©ãªãªãã·ã§ã³ãææ¡ãããŸããã List(14, 35, -7, 46, 98).min List(14, 35, -7, 46, 98).max
䞊ååŠç
Scala 2.9ã§ã¯ãã䞊åã³ã¬ã¯ã·ã§ã³ããšåŒã°ããæ°ããã¿ã€ãã®ã³ã¬ã¯ã·ã§ã³ãå°å
¥ãããŸããforeach
ã map
ã filter
ãªã©ã®äžæ¬æäœãå®è¡ããããã«ãã«ãã³ã¢ããã»ããµã䜿çšããŸãã
ãã®äŸã¯ã䞊åã³ã¬ã¯ã·ã§ã³ã®äœ¿çšã瀺ããŠããŸãã dataListãªã¹ãã§å®çŸ©ãããå€ãã®ããŒã¿ãšãããã»ããµãéåžžã«é »ç¹ã«äœ¿çšããprocessItemé¢æ°ããããšããŸãã 次ã®ã¯ã³ã©ã€ããŒã¯ã䞊åãªã¹ãåŠçãæäŸããŸãã val result = dataList.par.map(line => processItem(line))
ãšã©ãã¹ããã¹ã®ãµãã
ããŠãä»åã¯ãã®äŸã¯å®å
šã«å®çšçã§ã¯ãªããæè¡çã«ã¯1è¡ã§ã¯ãããŸãããå
ã«å®çŸ©ããæŒç®åã«äŸåããŠããããã§ããããããããšãå€èªã§ããªããŠããšã«ããã¯ãŒã«ã§ãã Daniel Sobralã¯ãSieve of Eratosthenesã¢ã«ãŽãªãºã ã®å®è£
ãèšè¿°ããŸãã ãããã¯ãæ°å€ãçŽ æ°ã§ãããã©ãããå€æããããã«äœ¿çšãããŸãã (n: Int) => (2 to n) |> (r => r.foldLeft(r.toSet)((ps, x) => if (ps(x)) ps -- (x * x to n by x) else ps))
|>æŒç®åã®å®çŸ©ãå¿
èŠã§ãããã®æ§æã¯FïŒããåçšãããŠããŸãã ããšãã°ã Steve Gilhamã®ããã°ãã芧ãã ããã
å
ã®æçš¿ïŒ ãåéãæåããã10åã®Scala One Linersã
æçš¿è
ïŒ Marcus KazmierczakCoffeScript
HNã«æè¿æçš¿ããã
Marcus Kazmierczakããã°ã®ã
åéã æåããã
ããã®Scalaã®10ã®ã·ã³ã°ã«ã©ã€ã³ ããšããèšäºãèªãã ãããããŸããã ç§ã¯ScalaïŒãŸãã¯JavaïŒãç¥ããªãããèŠæ ããè¯ãã®ã§ãå人ãæå¿ãããããšã«ãããJavaããScalaã«åãæ¿ããŠãã人ãããŸãã ãã¹ãŠã®äŸãå®è¡ããç°å¢ãšããŠ
node.jsã䜿çšããŸãã
ãªã¹ãå
ã®ãã¹ãŠã®ã¢ã€ãã ã2åã«ãã
ããŒã«ã¹ã¯ã map
æ©èœã§èªæ
¢ãå§ããŸãã range
ãšå¿åé¢æ°ã䜿çšããŠåãããšãã§ããŸãã [1..10].map (i) -> i*2
ããããããªãã¯ããè¡šçŸåè±ããªåœ¢ã§æžãããšãã§ããŸã i * 2 for i in [1..10]
çªå·ãªã¹ãåèš
JavascriptïŒããã³CoffeeScriptã®æ¡åŒµæ©èœïŒã«ã¯ãçµã¿èŸŒã¿ã®map
ããã³reduce
é¢æ°ããããŸãã [1..1000].reduce (t, s) -> t + s
ïŒreduce == reduceLeftãreduceRightã䜿çšå¯èœã§ãïŒ
éšåæååã確èª
some
æ¹æ³ãsome
ãããéåžžã«ç°¡åã§ãã é
åå
ã®èŠçŽ ã®ãããããé¢æ°ã«ãã£ãŠæºããããå Žåãtrueãè¿ããŸãã wordList = ["coffeescript", "eko", "play framework", "and stuff", "falsy"] tweet = "This is an example tweet talking about javascript and stuff." wordList.some (word) -> ~tweet.indexOf word
ããããããã¯å¯Ÿå¿ããåèªãè¿ããŸãïŒ wordList.filter (word) -> ~tweet.indexOf word
" ~
"ã¯CoffeeScriptã®ç¹å¥ãªæŒç®åã§ã¯ãªããåãªãæ±ãããªãã¯ã§ãã ããã¯ããããåäœã®NOTæŒç®åã§ããããªãã©ã³ãã®ããããå転ããŸãã å®éã«ã¯ãããã¯-x-1
åçã§ãã ããã§ã¯ã -1
ãã倧ããã€ã³ããã¯ã¹ã®ãã§ãã¯ãè¡ãã -(-1)-1 == 0
ãfalseãšè©äŸ¡ãããããšã«åºã¥ããŠåäœããŸãã
ãã¡ã€ã«ãèªã
ã¯ã©ã€ã¢ã³ãåŽã®JavaScriptãŠãŒã¶ãŒã¯ãã§ã«ãã®èãã«ç²ŸéããŠããŸãã fs.readFile 'data.txt', (err, data) -> fileText = data
åæããŒãžã§ã³ã䜿çšã§ããŸãã fileText = fs.readFileSync('data.txt').toString()
ãã ããnode.jsã§ã¯ãããã¯ã¢ããªã±ãŒã·ã§ã³ã®èµ·åæé ã§ã®ã¿åãå
¥ããããŸãã ã³ãŒãã§éåæããŒãžã§ã³ã䜿çšããå¿
èŠããããŸãã
ãèªçæ¥ããã§ãšã
ãŸããScalaããŒãžã§ã³ã1察1ã§è¡šç€ºã§ããŸãã [1..4].map (i) -> console.log "Happy Birthday " + (if i is 3 then "dear Robert" else "to You")
ããããããã¯å¯èœã§ãããããè¯ãã§ãã ããã¯ã»ãšãã©æ¬äŒŒã³ãŒãã®ããã«ãªããŸãïŒ console.log "Happy Birthday #{if i is 3 then "dear Robert" else "to You"}" for i in [1..4]
çªå·ãªã¹ãã®ãã£ã«ã¿ãªã³ã°
æ°åã®ãªã¹ãã®ãã£ã«ã¿ãªã³ã°ã¯éåžžã«äŒŒãŠããããšãå€æããŸããã passed = [] failed = [] (if score > 60 then passed else failed).push score for score in [49, 58, 76, 82, 88, 90]
ïŒãã£ã«ã¿ãŒã¯åŒãç¶ã䜿çšã§ããŸããã1è¡ã¯è¡šç€ºãããŸããïŒ
WebãµãŒãã¹ããã®XMLã®ååŸãšè§£æ
XMLäœïŒ ããã«ã€ããŠèããããšããããŸããã 代ããã«JSONãååŸããŸãããã request.get { uri:'path/to/api.json', json: true }, (err, r, body) -> results = body
ãªã¹ãå
ã®æå°ïŒãŸãã¯æ倧ïŒãæ€çŽ¢ããŸã
ããã§apply
æ©èœã¯äŸ¿å©ã§ãã é
åãåŒæ°ã®ãªã¹ããšããŠæž¡ãããšã§é¢æ°ãåŒã³åºãããšãã§ããŸãMath.max
ãšMath.min
ã¯å¯å€æ°ã®åŒæ°ãåãåããŸãã Math.max 30, 10, 20
è¿ããŸãã é
åãæäœããŠã¿ãŸãããã Math.max.apply @, [14, 35, -7, 46, 98] # 98 Math.min.apply @, [14, 35, -7, 46, 98] # -7
䞊ååŠç
ãŸã ååšããŸããã åããã»ã¹ãäœæããŠå¯Ÿè©±ãããã WebWorkers APIã䜿çšãããã§ããŸã ã ã¹ãããã
ãšã©ãã¹ããã¹ã®ãµãã
ããã1è¡ã«ç§»åã§ããŸããã§ããã ã¢ã€ãã¢ã¯ãããŸããïŒ sieve = (num) -> numbers = [2..num] while ((pos = numbers[0]) * pos) <= num delete numbers[i] for n, i in numbers by pos numbers.shift() numbers.indexOf(num) > -1
æŽæ°ïŒ6æ5æ¥ïŒïŒ @dionyzizããã³ã³ãã¯ãããŒãžã§ã³ãéãããŠããŸããã
primes = [] primes.push i for i in [2..100] when not (j for j in primes when i % j == 0).length
ãªãªãžãã«ã«äŒŒãçã®åäžè¡ããŒãžã§ã³ã«äœ¿çšã§ããŸãã (n) -> (p.push i for i in [2..n] when not (j for j in (p or p=[]) when i%j == 0)[0]) and n in p
ãŸãã¯ããå¹ççã«ïŒ (n) -> (p.push i for i in [2..n] when !(p or p=[]).some((j) -> i%j is 0)) and n in p
ããŒãã¹
ããªããä»ãŸã§èŠãäžã§æãèªãŸããfizzbuzz
ããŒãžã§ã³ïŒ "#{if i%3 is 0 then 'fizz' else ''}#{if i%5 is 0 then 'buzz' else ''}" or i for i in [1..100]
satyrããã®ã¡ãã£ãšãããã³ãã䜿ã£ãŠãããã«ç°¡åã§ããã泚æãå¿
èŠã§ãã ['fizz' unless i%3] + ['buzz' unless i%5] or i for i in [1..100]
å
ã®æçš¿ïŒ ãåéãæåããã10åã®CoffeeScript One Liners
ã
æçš¿è
ïŒ ãªã«ã«ãã»ããã·FïŒ
10ã®ç²Ÿç¥ã§ã
Scalaã§åéãæåããã10ã®ã·ã³ã°ã«ã©ã€ã㌠ãã¯ãFïŒã®ã·ã³ã°ã«ã©ã€ããŒã§ãã
ãªã¹ãå
ã®ãã¹ãŠã®æ°åã2åã«ãã
ç°¡åã§ããFïŒã«ãmap
ãããmap
ã [1 .. 4] |> Seq.map (fun x -> x * x);;
çªå·ãªã¹ãåèš
FïŒã«sum
ãããã®ãšåããããç°¡åã§ãïŒ [1 .. 4] |> Seq.sum;;
éšåæååã確èª
ãããŠãããã¯ç°¡åã§ãã ["f#"; "scala"] |> Seq.find(fun w -> "this tweet contains f#".Contains(w));;
ãã¡ã€ã«ã®èªã¿èŸŒã¿ïŒã€ãŸããªãïŒïŒ
FïŒã«ã¯ãã¹ãŠã®ã©ã€ãã©ãªããããŸãã NET ãã¡ã€ã«ã®ãã¹ãŠã®è¡ãã·ãŒã±ã³ã¹ãšããŠèªã¿åãã®ã¯éåžžã«ç°¡åã§ãã File.ReadLines(@"file.txt") |> Seq.map(fun l -> l.Length) |> Seq.sum;;
ãèªçæ¥ããã§ãšã
ãŸããéå±ãª...ãã®ãããªïŒ [1 .. 4] |> Seq.map (fun i -> "Happy Birthday " + (if i = 3 then "dear NAME" else "to you")) |> Seq.iter Console.WriteLine;;
ãªã¹ãã®ãã£ã«ã¿ãªã³ã°ïŒå®éã®åå²ïŒ
çµã¿èŸŒã¿ã®partition
é¢æ°ã䜿çšããŠããªã¹ããç°¡åã«åå²ã§ããŸãã [49; 58; 76; 82; 88; 90] |> List.partition (fun i -> i > 60);;
XMLã®ååŸãšè§£æ
ç¹°ãè¿ããŸããã.NETã©ã€ãã©ãªã¯äŸ¿å©ã§ãã æ®å¿µãªãããããã¯FïŒã®æ£ç¢ºãª1è¡ã§ã¯ãããŸããã ããããDon Symeã¯ãããåæçããã³éåæçã«è¡ãæ¹æ³ã瀺ããŠããŸã ã
ãªã¹ãã§æ倧å€ãšæå°å€ãæ€çŽ¢ããŸã
ãããè¡ãã«ã¯ãFïŒãããã¯ãŒã¯æ§ç¯é¢æ°ã§ïŒ [49; 58; 76; 82; 88; 90] |> Seq.min;; [49; 58; 76; 82; 88; 90] |> Seq.max;;
䞊ååŠç
ããã¯J Rochaã®äŸã§ãã isprimeã¡ãœãããããã1ã50,000ã®æåŸã®æ¡ã§ã°ã«ãŒãåãããçŽ æ°ãååŸãããšããŸããPSeqã¯ã·ãŒã±ã³ã¹ã䞊ååŠçããŸãã [|1 .. 50000|] |> PSeq.filter isprime |> PSeq.groupBy (fun i -> i % 10) |> PSeq.map (fun (k, vs) -> (k, Seq.length vs)) |> Seq.toArray |> Seq.sort |> Seq.toList;;
å
ã®æçš¿ïŒ ãFïŒOneã©ã€ããŒã§åéãæå¿ãããã
æçš¿è
ïŒ ãŠã£ã«ã»ãã£ãããžã§ã©ã«ãã«ããŒ
Scalaã®è¡šçŸåã瀺ãããã«ã10ã®åäžè¡ã®äŸã®ãªã¹ããå
¬éãããŠããŸãã CoffeeScriptããŒãžã§ã³ã¯ããã«ç»å Žããã®ã§ãRubyããŒãžã§ã³ã ããå
¬éãããšæããŸããã Rubyã®æ§æã¯Scalaãããå°ããã£ããããŠããŸãããæ¬è³ªçã«ã¯ïŒå°ãªããšããããã®äŸã瀺ãéãã§ã¯ïŒæ¯èŒç䌌ãŠããŸãã
ãªã¹ãå
ã®ãã¹ãŠã®æ°åã2åã«ãã
(1..10).map { |n| n * 2 }
çªå·ãªã¹ãåèš
(1..1000).inject { |sum, n| sum + n }
ãŸãã¯ãïŒçµã¿èŸŒã¿ïŒ Symbol#to_proc
䜿çšãSymbol#to_proc
ãããã¯ãRubyããŒãžã§ã³1.8.7以éã§äœ¿çšå¯èœã§ãã (1..1000).inject(&:+)
ãŸãã¯ãã®ããã«ïŒ (1..1000).inject(:+)
éšåæååã確èª
words = ["scala", "akka", "play framework", "sbt", "typesafe"] tweet = "This is an example tweet talking about scala and sbt." words.any? { |word| tweet.include?(word) }
ãã¡ã€ã«ãèªã
file_text = File.read("data.txt") file_lines = File.readlines("data.txt")
åŸè
ã®å Žåãé
åã®åèŠçŽ ã®æ«å°Ÿã«ã\ nããå«ãŸããŸããããã¯ã .map { |str| str.chop }
.map { |str| str.chop }
ãŸãã¯ä»£æ¿ããŒãžã§ã³ã®äœ¿çšïŒ File.read("data.txt").split(/\n/)
ãèªçæ¥ããã§ãšã
4.times { |n| puts "Happy Birthday #{n==2 ? "dear Tony" : "to You"}" }
çªå·ãªã¹ãã®ãã£ã«ã¿ãªã³ã°
[49, 58, 76, 82, 88, 90].partition { |n| n > 60 }
WebãµãŒãã¹ããã®XMLã®ååŸãšè§£æ
require 'open-uri' require 'hpricot' results = Hpricot(open("http://search.twitter.com/search.atom?&q=scala"))
ãã®äŸã§ã¯ãopen-uriããã³hpricotãŸãã¯åçã®ã©ã€ãã©ãªãå¿
èŠã§ãïŒçµã¿èŸŒã¿ã䜿çšã§ããŸãïŒã ããã¯ããŸãå€ãã®ã³ãŒãã§ã¯ãããŸããããScalaã¯ããã§æããã«åã¡ãŸãã
ãªã¹ãå
ã®æå°ïŒãŸãã¯æ倧ïŒãæ€çŽ¢ããŸã
[14, 35, -7, 46, 98].min [14, 35, -7, 46, 98].max
䞊ååŠç
require 'parallel' Parallel.map(lots_of_data) do |chunk| heavy_computation(chunk) end
Scalaãšã¯ç°ãªãããã«ãã³ã¢ãµããŒãã¯çµã¿èŸŒãŸããŠããŸããã ãã®äŸã§ã¯ã 䞊åãŸãã¯é¡äŒŒã®gemãå¿
èŠã§ãã
ãšã©ãã¹ããã¹ã®ãµãã
Scalaã®ã¯ã³ã©ã€ããŒã¯éåžžã«é£è§£ã§ãããå®å
šã«å€èªã§ããŸããã Rubyã§è€æ°è¡ãå¿
èŠãšããåçŽãªå®è£
ïŒ index = 0 while primes[index]**2 <= primes.last prime = primes[index] primes = primes.select { |x| x == prime || x % prime != 0 } index += 1 end p primes
ãã®äŸã¯StackOverflowã䜿çšããŠããŸãã
å
ã®æçš¿ïŒ ãåéãæåããã10åã®Ruby One Linerã
æçš¿è
ïŒ Antonio Cangianoã¯ããŒãžã¥ã¢
ä»æ¥ãã
Scala㧠åéãæåããã 10åã®ã·ã³ã°ã«ã©ã€ã³ ããšããèå³æ·±ãæçš¿ãèŠãåŸ
ã ã
CoffeeScriptã§åéãæåããã10åã®ã·ã³ã°ã«ã©ã€ã³ ããšããããã°æçš¿ã«èª°ããæçš¿ã
ãŸãã ã ãããã®2ã€ã®æçš¿ã¯å°ããªã¿ã¹ã¯ã瀺ããŠããŸãïŒã»ãšãã©ã®ã¿ã¹ã¯ã¯ææ°ã®ããã°ã©ãã³ã°èšèªã§ç°¡åãªè§£æ±ºçãæã£ãŠããŸãïŒãåã¿ã¹ã¯ã¯çŽ1è¡ã®ã³ãŒãã§å®è¡ãããŸãã
ç§ã®ãæ°ã«å
¥ãã®ããã°ã©ãã³ã°èšèªã§ãã
Clojureã«ã€ããŠãåãããšãè¡ãã®ãé©åã ãšæããŸãã
ãªã¹ãå
ã®ãã¹ãŠã®æ°åã2åã«ãã
(map #(* % 2) (range 1 11))
çªå·ãªã¹ãåèš
(reduce + (range 1 1001))
éšåæååã確èª
ããã§æ£èŠè¡šçŸã䜿çšããã®ãé©åã ãšæããŸãïŒ (def tweet "This is an example tweet talking about clojure and emacs.") (def regex (re-pattern (apply str (interpose "|" ["clojure" "logic" "compojure" "emacs" "macros"])))) (re-seq regex tweet)
ã³ã¡ã³ããŒã¿ãŒã瀺åããããã«ãClojureã»ããã䜿çšããããšã«ãããæ£èŠè¡šçŸã䜿çšããã«ãã®åé¡ã解決ã§ããŸãã (def tweet "This is an example tweet talking about clojure and emacs.") (def is-word? (set ["clojure" "logic" "compojure" "emacs" "macros"])) (not (nil? (some is-word? (.split tweet " "))))
ãã¡ã€ã«ãèªã
(def file-text (slurp "data.txt")) ; (def file-lines (clojure.contrib.io/read-lines "data.txt")) ;
Clojure Contribã¯ä»åŸã®Clojureã®ãªãªãŒã¹ã§éæšå¥šãšãªãã clojure.contrib.io/read-lines
(line-seq (clojure.java.io/reader (clojure.java.io/file âdata.txtâ)))
clojure.contrib.io/read-lines
ã¯(line-seq (clojure.java.io/reader (clojure.java.io/file âdata.txtâ)))
ãšæžãããšãã§ããŸã(line-seq (clojure.java.io/reader (clojure.java.io/file âdata.txtâ)))
Clojure 1.3以éã ãããææããŠãããã¢ãŒãã³ã«æè¬ããŸãã
ãèªçæ¥ããã§ãšã
(doseq [l (map #(str "Happy Birthday " (if (= % 2) "dear Rich" "to You")) (range 4))] (println l))
代æ¿ããŒãžã§ã³ïŒ (dotimes [n 4] (println "Happy Birthday " (if (= n 2) "dear Rich" "to You")))
çªå·ãªã¹ãã®ãã£ã«ã¿ãªã³ã°
(partition-by #(> % 60) [49 58 76 82 88 90])
WebãµãŒãã¹ããã®XMLã®ååŸãšè§£æ
(clojure.xml/parse "http://search.twitter.com/search.atom?&q=clojure")
ãªã¹ãã§æå°å€ãšæ倧å€ãæ€çŽ¢ããŸã
(reduce max [14 35 -7 46 98]) (reduce min [14 35 -7 46 98]) ;; ((juxt #(reduce max %) #(reduce min %)) [14 35 -7 46 98]) ; [98 -7]
䞊ååŠç
;; , process-line - , (pmap process-line lines) ; "p" map
ãšã©ãã¹ããã¹ã®ãµãã
ãããã©ãŒãã³ã¹ãšçŸããã®ç¹ã§ãããšã©ãã¹ããã¹ã®ãµãããã«å¯Ÿãã1è¡ã®è§£æ±ºçã§ã¯äžååã§ãã ãã®åé¡ã解決ããã«ã¯ãã誰ã§ããšã©ãã¹ããã¹ã®ãµãããæããããšããé¡åã®ã¯ãªã¹ããã»ã°ã©ã³ãã®äœåãââãã§ãã¯ããããšããå§ãããŸãã
FizzBuââzzãœãªã¥ãŒã·ã§ã³
(map #(cond (zero? (mod % 15)) "FizzBuzz" (zero? (mod % 3)) "Fizz" (zero? (mod % 5)) "Buzz" :else %) (range 1 101))
å
ã®æçš¿ïŒ ãåã ã¡ãæåããã10åã®Clojure Oneã©ã€ããŒã
æçš¿è
ïŒ BaishampayanPython
ScalaãRubyãClojureãCoffeeScriptã§10ã®é©ãã¹ãã¯ã³ã©ã€ããŒãè¡ã£ãåŸãPythonã§åãããšãããã®ã¯é¢çœããšæããŸããã
å€ãã®ãã€ãºãªã...è¡ããŸãããã å€æ°ã®å®£èšãšã€ã³ããŒãã¯ãå¿
èŠã«å¿ããŠå¥ã
ã®è¡ã«ããããšã«æ³šæããŠãã ããã ãŸããè¿
éãªæ€èšŒã®ããã«çµæãæšæºåºåã«åºåãããããã«ãåè¡ãæžã蟌ãŸããŸãã
ãã®æçš¿ã¯ãããããç§ãæžããæéã®èšäºã®1ã€ã§ãã
ãªã¹ãå
ã®ãã¹ãŠã®æ°åã2åã«ãã
print map(lambda x: x * 2, range(1,11))
çªå·ãªã¹ãåèš
print sum(range(1,1001))
éšåæååã確èª
wordlist = ["scala", "akka", "play framework", "sbt", "typesafe"] tweet = "This is an example tweet talking about scala and sbt." print map(lambda x: x in tweet.split(),wordlist)
ãã¡ã€ã«ãèªã
print open("ten_one_liners.py").readlines()
ãèªçæ¥ããã§ãšã
print map(lambda x: "Happy Birthday to " + ("you" if x != 2 else "dear Name"),range(4))
çªå·ãªã¹ãã®ãã£ã«ã¿ãªã³ã°
print reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49, 58, 76, 82, 88, 90],([],[]))
WebãµãŒãã¹ããã®XMLã®ååŸãšè§£æ
from xml.dom.minidom import parse, parseString import urllib2
ãªã¹ãã§æå°å€ãšæ倧å€ãæ€çŽ¢ããŸã
print min([14, 35, -7, 46, 98]) print max([14, 35, -7, 46, 98])
䞊ååŠç
import multiprocessing import math print list(multiprocessing.Pool(processes=4).map(math.exp,range(1,11)))
ãšã©ãã¹ããã¹ã®ãµãã
n = 50
å
ã®æçš¿ïŒ ãåéãæåããã10åã®Python oneã©ã€ããŒã
æçš¿è
ïŒ Dhananjay NeneCïŒ
ãªã¹ãå
ã®ãã¹ãŠã®æ°åã2åã«ãã
Print("Multiple each item in a list by 2", Enumerable.Range(1, 10).Select(i => i * 2));
çªå·ãªã¹ãåèš
Print("Sum a list of numbers", Enumerable.Range(1, 1000).Sum())
éšåæååã確èª
var wordlist = new[] { "C#", "and stuff" }; var tweet = "This is an example tweet talking about C# and stuff"; Print("Verify if a word exists in string", wordlist.Any(word => tweet.IndexOf(word) > -1)); Print("Show matched words in string", wordlist.Where(word => tweet.IndexOf(word) > -1));
ãã¡ã€ã«ãèªã
Print("Read in a File", File.ReadAllBytes("oneliners.exe").Length)
ãèªçæ¥ããã§ãšã
Print("Happy Birthday", Enumerable.Range(1, 4).Select((i) => string.Format("Happy Birthday {0} ", i == 3 ? "dear NAME" : "to You")))
çªå·ãªã¹ãã®ãã£ã«ã¿ãªã³ã°
var passed = new List<int>(); var failed = new List<int>(); (from bucket in new[] { passed, failed } from i in new[] { 49, 58, 76, 82, 88, 90 } select new { bucket, i }).ToList().ForEach((tuple) => tuple.bucket.AddRange(Enumerable.Repeat(tuple, 1).Where((tup) => (tup.bucket == passed && tup.i > 60) || (tup.bucket == failed && tup.i <= 60)).Select((tup) => tup.i))); Print("Filter list of numbers >60", (IEnumerable<int>)passed); Print("Filter list of numbers <=60", (IEnumerable<int>)failed);
WebãµãŒãã¹ããã®XMLã®ååŸãšè§£æ
Print("Fetch and Parse an XML web service", XDocument.Load("http://search.twitter.com/search.atom?&q=scala"))
ãªã¹ãã§æå°å€ãšæ倧å€ãæ€çŽ¢ããŸã
Print("Find minimum in a list", Enumerable.Min(new[] { 14, 35, -7, 46, 98 })); Print("Find maximum in a list", Enumerable.Max(new[] { 14, 35, -7, 46, 98 }));
䞊ååŠç
Print("Parallel Processing", Enumerable.Range(1, 10).AsParallel().Select((i)=>i*2).AsEnumerable())
ãã£ãºããº
Print("Fizzbuzz", Enumerable.Range(1, 15).Select((i)=>i + (i%3==0?"fizz":"") + (i%5==0?"buzz":"")))
å
ã®æçš¿ïŒ ã10 CïŒOne Liners to Impress Your Friendsã
æçš¿è
ïŒ ãªãã£ãŒãã»ããŒã¯ããŒãã¹ã±ã«
ããŒã ã«ç¶ããŠïŒ
scala ã
ruby ã
clojure ã
python ã
fïŒ ã
coffeescript ã
cïŒ ïŒã
ãªã¹ãå
ã®ãã¹ãŠã®æ°åã2åã«ãã
map (*2) [1..10]
çªå·ãªã¹ãåèš
foldl (+) 0 [1..1000]
éšåæååã確èª
import Data.List let wordlist = ["monad", "monoid", "Galois", "ghc", "SPJ"] let tweet = "This is an example tweet talking about SPJ interviewing with Galois" or $ map (flip isInfixOf tweet) wordlist
ãã¡ã€ã«ãèªã
fileText <- readFile "data.txt" let fileLines = lines fileText
ãèªçæ¥ããã§ãšã
mapM_ putStrLn ["Happy Birthday " ++ (if x == 3 then "dear NAME" else "to You") | x <- [1..4]]
çªå·ãªã¹ãã®ãã£ã«ã¿ãªã³ã°
let (passed, failed) = partition (>60) [49, 58, 76, 82, 88, 90]
WebãµãŒãã¹ããã®XMLã®ååŸãšè§£æ
ãã®äŸã§ã¯ã curl
ããã³xml
ããã±ãŒãžãå¿
èŠã§ãã ã€ã³ã¹ããŒã«ã«ã€ããŠã¯ã RWHãåç
§ããŠãã ããã import Network.Curl import Text.XML.Light import Control.Monad let results = liftM parseXMLDoc $ liftM snd (curlGetString "http://search.twitter.com/search.atom?&q=haskell" [])
ãªã¹ãã§æå°å€ãšæ倧å€ãæ€çŽ¢ããŸã
foldl1 min [14, 35, -7, 46, 98] foldl1 max [14, 35, -7, 46, 98]
䞊ååŠç
ãã®äŸã§ã¯ã parallel
ããã±ãŒãžãå¿
èŠã§ãã
import Control.Parallel import Control.Parallel.Strategies parMap rseq (*2) [1..100]
çŽ æ°ã®çæ
let pgen (p:xs) = p : pgen [x|x <- xs, x `mod` p > 0] take 40 (pgen [2..])
å
ã®æçš¿ïŒ ãåéãæåããã10åã®Haskell One Linersã
æçš¿è
ïŒ Michael Fogus
ãããŠä»ãããªãã®ãªãã·ã§ã³ããããŠããªããŒãå§ãŸããŸãããã«ïŒ ïŒ