私はFunctional Programming(FP)を読んで遊んできましたが、そのコンセプトは本当に好きですが、ほとんどのアプリケーションにどのように適用するかはわかりません。Functional Programming on App開発の使い方
もっと具体的には、iOSアプリケーションについて説明しましょう。私は、不変のデータ構造や高次関数のような概念のいくつかを使用する方法を見ていますが、FPの主要部分であると思われる副作用を避けるためだけに/ほとんど純粋な関数では動作しません。
ほとんどのアプリは、入力呼び出しの調整、データの表示、データの保存、ネットワーク要求の作成、ある画面から別の画面へのナビゲート、アニメーションの操作を感じています。入力コーディネート
- :
すべてのものはFPの不純な機能になり、ボタンのタップ、それらを観察する私がコールするかを決定する必要があるすべての人のための通知、サーバソケットプッシュを、
- データの表示:ローカルデータベースまたはサーバーからの読み取り(副作用)。
- データを保存する:上記と同じですが、書き込みします。
- ネットワークリクエストの作成:明らかです。ここでは、Instagramからリストイメージを取得する例を示します。
- ナビゲーション:これは基本的に副作用であるView Controllerを提示しています。
- アニメーション:画面上の何かを変える、副作用。
データを処理する場所はほとんどなく、ほとんどの場合、データベースからいくつかの構造体を取得し、複数の情報をView Controllerで使用される別の構造体に連結します(5あなたがビューに表示される5つのプロパティを必要とすると仮定します)。もちろん、money: Int = 20 to moneyString: String = "US$\(money).00"
のような処理をする必要があるかもしれませんが、それだけです。
アプリ開発サイクルでFPを実装できないような気がします。どのように私はそれを達成することができます誰も明確にできますか?多分例を挙げるとよいでしょう。
ありがとうございます。
EDIT:は今、Clean Architectureアイデア以下、私は私のアーキテクチャとして、このようなものを持っている:
入力は、ボタンのクリックなど、彼らはに行く、View
から来ることができますViewController
誰がInteractor
に電話するかを決定します。そのInteractor
は、いくつかのデータを取得し、Presenter
(デリゲートの形式)に渡される表現可能なデータに変換するために、必要なGateway
にアクセスします。最後にPresenter
はView
を更新して新しいデータを表示します。
さらに、入力はExternal
ソースから来ることができます。サーバーは、一部のデータが更新されたことを伝え、View
を更新する必要があります。これは、前の例のようにチェインの残りの部分に続くInteractor
(オブザーバーの形式)になります。
唯一のFP部はGateway
のデータを表現可能なデータに変換しています。すべての残りの副作用があります。私は何か間違ったことをしているように感じ、そのコードのいくつかを別々に編成して、より多くのコードを純粋な関数に移すことができるようにする必要があります。
@ Sam Kuhmonen私の質問は、より具体的に更新されました。 –
@ Paulw11質問をより具体的に更新しました。 –
@dfri質問をより具体的に更新しました。 –