Create a gist now

Instantly share code, notes, and snippets.

kichijoji.pm #3 LT

Kichijoji.pm #3


前回(#2)のおさらい

DockerでApp::revealupを起動できませんでした

#3にご期待ください


no_progress.gif


そしたらytnobodyさんが作ってました


## revealup


何もせずこれにてcloseです


折角なのでテンプレートのmarkdownはっておきますね^^

template.md


自己紹介

【warnning】mizchiさんじゃないです

  • Name:岡田 旭(okada akira)
  • Twitter:akira1908jp

PHPerです


fucntional programming(ただしPHP)


残念、タイトルは釣りです。


関数型プログラミングなんて知りません。


それっぽい話しをしてみたかっただけです


例題:FizzBuzz


PHP

  1 <?php 
  2  
  3 $params = range(1,100); 
  4  
  5 foreach ($params as $param) { 
  6  
  7     $tmp = ""; 
  8     if ($param % 3 === 0) { 
  9         $tmp = "fizz"; 
 10     } 
 11     if ($param % 5 === 0){ 
 12         $tmp .= "buzz"; 
 13     } 
 14     if (empty($tmp)) { 
 15         $tmp = $param; 
 16     } 
 17     print $tmp . PHP_EOL; 
 18  
 19 } 

最近はIQ145の女子高生に怒られるみたいです

「ずいぶんとダサいコードを書いてるのね。」

アッハイ


perl


Acme::FizzBuzz


Nephia::Context


関数型php

  1 <?php
  2 // PHP5 >= 5.5
  3 $params = range(1, 100);
  4 
  5 $fizzbuzz_filter = function ($bool, $str) {
  6     if(filter_var($bool, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) {
  7         return $str;
  8     }
  9     return "";
 10 };
 11 
 12 $fizz = function ($param) use ($fizzbuzz_filter){
 13     return $fizzbuzz_filter($param % 3 === 0, "fizz");
 14 };
 15 
 16 $buzz = function ($param) use ($fizzbuzz_filter) {
 17     return $fizzbuzz_filter($param % 5 === 0, "buzz");
 18 };
 19 
 20 $fizzbuzz = function ($param) use ($fizz, $buzz)  {
 21     $ret = $fizz($param) . $buzz($param);
 22     if (empty($ret)) {
 23         $ret = $param;
 24     }
 25     return $ret;
 26 };
 27 
 28 $call = function ($params) use ($fizzbuzz) {
 29     foreach ($params as $param) {
 30         yield $fizzbuzz($param);
 31     }
 32 };
 33 
 34 foreach ($call($params) as $value) {
 35     print $value. PHP_EOL;
 36 };
 37 

でも、これってデザインパターンじゃないの?

  • Singleton
  • Abstract Factory
  • Decorator

まだパラダイムという言葉に躍らされている?m9(^Д^)


(見えない圧力)

YAPCアンケート

http://bit.ly/yapc_i_want

http://bit.ly/yapc_enquete

YAPC ボランティアスタッフ

http://yapcasia.org/2015/news/04/volunteer-staff-wanted.html


ご清聴ありがとうございました。

// PHP5 >= 5.5
$params = range(1, 100);
$fizzbuzz_filter = function ($bool, $str) {
if(filter_var($bool, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) {
return $str;
}
return "";
};
$fizz = function ($param) use ($fizzbuzz_filter){
return $fizzbuzz_filter($param % 3 === 0, "fizz");
};
$buzz = function ($param) use ($fizzbuzz_filter) {
return $fizzbuzz_filter($param % 5 === 0, "buzz");
};
$fizzbuzz = function ($param) use ($fizz, $buzz) {
$ret = $fizz($param) . $buzz($param);
if (empty($ret)) {
$ret = $param;
}
return $ret;
};
$call = function ($params) use ($fizzbuzz) {
foreach ($params as $param) {
yield $fizzbuzz($param);
}
};
foreach ($call($params) as $value) {
print $value. PHP_EOL;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment