Recursion is a procedure that allows us to iterate through certain data structure. For example we can iterate through lists
sum : List Nat -> Nat
sum list =
| <?php | |
| final class Country | |
| { | |
| private string $countryCode; | |
| private function __construct(string $countryCode) | |
| { | |
| $this->countryCode = $countryCode; | |
| } | 
| <?php | |
| declare(strict_types=1); | |
| /** | |
| * @template F | |
| * @template A | |
| * @extends Functor<F,A> | |
| */ | |
| interface Apply extends Functor | 
| <?php | |
| declare(strict_types=1); | |
| namespace Marcosh\PhpValidationDSL; | |
| final class Boolean | |
| { | |
| /** @var Bool */ | |
| private $isTrue; | 
| {-# LANGUAGE LambdaCase #-} | |
| {-# LANGUAGE FunctionalDependencies #-} | |
| {-# LANGUAGE MultiParamTypeClasses #-} | |
| module Graph where | |
| import Control.Comonad | |
| -- we need to separate `a` and `b` because `a` is covariant while `b` is contravariant => this is actually a profuctor | |
| data PointedGraph moves b a = PointedGraph | 
| {-# LANGUAGE AllowAmbiguousTypes #-} | |
| {-# LANGUAGE MultiParamTypeClasses #-} | |
| {-# LANGUAGE FlexibleInstances #-} | |
| {-# LANGUAGE ScopedTypeVariables #-} | |
| {-# LANGUAGE TypeApplications #-} | |
| module NamedTypeclass where | |
| import Prelude hiding (Monoid, mempty, (<>)) | 
| module Application where | |
| import Data.Profunctor | |
| newtype Application request response = Application {unApplication :: request -> IO response} | |
| instance Profunctor Application where | |
| dimap actOnRequest actOnResponse application = Application $ (fmap actOnResponse) . (unApplication application) . actOnRequest | 
| module Hanoi | |
| import Data.Vect | |
| data Peg | |
| = First | |
| | Second | |
| | Third | |
| -- TODO : can we do better here? | 
| PDO::FETCH_FUNC without validation | |
| 10: 0.001568078994751 | |
| 0.00071001052856445 | |
| 0.00085306167602539 | |
| 0.00087618827819824 | |
| 0.00083112716674805 | |
| 100: 0.0012631416320801 | |
| 0.0014598369598389 | 
| <?php | |
| namespace MyTestNamespace; | |
| //relevant use clauses | |
| use ... | |
| final class AddItemIntegrationTest extends \PHPUnit_Framework_TestCase | |
| { | |
| public function testAddItem() |