Clean up interpretation code
authorwidmogrod <widmogrod@gmail.com>
Mon, 1 Jan 2018 22:36:50 +0000 (23:36 +0100)
committerwidmogrod <widmogrod@gmail.com>
Mon, 1 Jan 2018 22:36:50 +0000 (23:36 +0100)
example/FreeDooDSLTest.php
src/Monad/Control/Doo/interpretation.php

index c5f5680..ed27d2b 100644 (file)
@@ -38,7 +38,6 @@ class FreeDooDSLTest extends \PHPUnit\Framework\TestCase
                                 return Identity::of($c * $c);
                             });
                     });
-
             });
 
         $this->assertEquals(Identity::of(16), $result);
index 34d1ba6..05c09a6 100644 (file)
@@ -35,7 +35,7 @@ function interpretation(DooF $f)
     return match([
         Let::class => function (string $name, Monad $m, MonadFree $next): Reader {
             return Reader::of(function (Registry $registry) use ($name, $m, $next) {
-                return $m->bind(function ($v) use ($name, $next, &$registry) {
+                return $m->bind(function ($v) use ($name, $next, $registry) {
                     $registry->set($name, $v);
 
                     return $next;
@@ -44,9 +44,7 @@ function interpretation(DooF $f)
         },
         In::class => function (array $names, callable $fn, callable $next): Reader {
             return Reader::of(function (Registry $registry) use ($names, $fn, $next) {
-                $args = array_map(function ($name) use ($registry) {
-                    return $registry->get($name);
-                }, $names);
+                $args = array_map([$registry, 'get'], $names);
 
                 return $next($fn(...$args));
             });