Skip to content

Instantly share code, notes, and snippets.

View 53ningen's full-sized avatar
🐰
Is the Order a Rabbit?

gomi_ningen 53ningen

🐰
Is the Order a Rabbit?
View GitHub Profile

Java EE7 エッセンシャルレシピ

Java EE7 の機能概要

  • ロジックをきれいに保つことが大切:データアクセス・ビュー層と粗結合に

Managed Bean/ Java Common Annotation

  • SEとEEで提供されているAnnotationは微妙に違う
  • リソース参照・インスタンス生成・破棄ができる
  • リソース参照:@Resourceによるインジェクト

13. モナドがいっぱい

  • Functor を導入した動機
    • a -> b 型の関数を f a -> f b の関数にしたい (fmap操作が欲しい)
  • Applicative を導入した動機
    • f (a -> b) 型を f a -> f b 型の関数にしたい (<*>操作が欲しい)

モナド:「普通の値 a を取っ文脈付きの値を返す関数 (a -> m b) に、文脈付きの値 m a を渡したい」という願いをかなえるもの。 この関数 >>= は bind とよばれている。

Writer Monad

newtype Writer w a = Writer { runWriter :: (a, w) }

instance (Monoid w) => Monad (Writer w) where
    return x = Writer (x, mempty)
    (Writer (x, v)) >>= f = let (Writer (y, v')) = f x 
                              in Writer (y, v `mappend` v')

Swift コード規約の提案

  • 構造体・クラスは定数プロパティのみを用いる
  • 構造体・クラスのイニシャライザは1つに限定する

基本的なコードスタイル

class Hage {
 public func getHoge(arg : TYPE) -&gt; RETTYPE {
; ModuleID = 'HelloWorld.c'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.10.0"

@.str = private unnamed_addr constant [14 x i8] c"hello, world\0A\00", align 1
@.str1 = private unnamed_addr constant [24 x i8] c"is the order a rabbit?\0A\00", align 1

; Function Attrs: nounwind ssp uwtable
define i32 @main() #0 {

RxSwift はじめのいっぽ

RxSwift を使う機会があったため、その挙動がとりあえず、なんとなくわかるようなコードをまとめておきます。

import Quick
import Nimble
import RxSwift

(注)この記事はScala関数型プログラミング&デザイン7章前半の劣化版まとめです

整数列の足し算について考えてみよう。たたみ込みなどがパッと思い付くだろう。

def sum(ints: Seq[Int]): Int = ints.foldLeft(0)((a, b) => a + b)

// 注: scalaでは整数列のたたみ込み演算についてあらかじめ関数が用意されていて、
// IntelliJを使っている場合は上記のコードに対して以下のsum関数を用いることを勧められるかもしれない
// at scala.TraversableOnce
* [ ] iOS開発におけるDI
* [ ] Logging
* [ ] 設定ファイルのもち方・切り替え
* [ ] Mockライブラリ
* [ ]
* [ ] ご注文はうさぎですか?? アドベントカレンダー
* [ ] エンジニアハッカソン向け企画内容
* [ ]

関数型プログラミングとは

関数型プログラミングとは以下のようなものです

  • __純粋関数(pure function)__だけを使ってプログラムを構築することが前提
  • 純粋関数と__副作用(side effect)__のない関数のことを指す

副作用の定義はとりあえず置いておくとして、副作用の例として以下のようなものがあります

  • 変数を変更する(変数への再代入/forループのカウンタなども)