home > さまざまな言語で数値計算 > 関数型プログラミングの基本 >

さまざまな言語で数値計算

Only Do What Only You Can Do

10未満の3の倍数 (filter)

VBScript

JScript

range 機能を自作

Array.prototype.range = function(start, end)
{
    var array = new Array();
    var j = 0;
    for (var i = start; i <= end; i++)
    {
        array[j++] = i;
    }
    return array;
}

map 機能を自作

Array.prototype.map = function(func)
{
    for (var i = 0; i < this.length; i++)
    {
        func(this[i]);
    }
}

filter 機能を自作

Array.prototype.filter = function(func)
{
    var array = new Array();
    var j = 0;
    for (var i = 0; i < this.length; i++)
    {
        if (func(this[i])) array[j++] = this[i];
    }
    return array;
}

10 未満の 3 の倍数

var array = new Array().
    range(1, 9).
    filter(function (n) { return (n % 3 == 0); }).
    map(function (n) { WScript.Echo(n); });
Z:\>cscript //nologo Js0202.js
3
6
9

PowerShell

対話型実行環境を起動

Z:\>powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

10未満の3の倍数

1..9 | where { $_ % 3 -eq 0}
PS Z:\> 1..9 | where { $_ % 3 -eq 0}
3
6
9

終了

PS Z:\> exit

Perl

対話型実行環境を起動

Z:\>perl -de 0

Loading DB routines from perl5db.pl version 1.37
Editor support available.

Enter h or 'h h' for help, or 'perldoc perldebug' for more help.

main::(-e:1):   0

10未満の3の倍数

map {print $_, ","} grep {$_ % 3 == 0} 1..9
  DB<1> map {print $_, ","} grep {$_ % 3 == 0} 1..9
3,6,9,

終了

  DB<2> q

PHP

対話型実行環境を起動

Z:\>php -a
Interactive mode enabled

10未満の3の倍数

<?php
$ary = array_filter(range(1,9), function ($n) {return ($n % 3 == 0);});
array_map(function ($n) {echo $n, ",";}, $ary);
?>
<?php
$ary = array_filter(range(1,9), function ($n) {return ($n % 3 == 0);});
array_map(function ($n) {echo $n, ",";}, $ary);
?>

終了

^Z
3,6,9,

Python

対話型実行環境を起動

Z:\>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

10未満の3の倍数

[n for n in range(1, 10) if (n % 3 == 0)]
>>> [n for n in range(1, 10) if (n % 3 == 0)]
[3, 6, 9]
filter(lambda n: (n % 3 == 0), range(1, 10))
>>> filter(lambda n: (n % 3 == 0), range(1, 10))
[3, 6, 9]

終了

>>> quit()

Ruby

対話型実行環境を起動

Z:\>irb

10未満の3の倍数

(1..9).select { |n| n % 3 == 0}
irb(main):001:0> (1..9).select { |n| n % 3 == 0}
=> [3, 6, 9]

終了

irb(main):002:0> exit

Groovy

Pascal

Ada

VB.NET

C#

using System.Linq;
using System.Collections.Generic;

public class CS0202
{
    public static void Main()
    {
        IEnumerable<int> squares = 
            Enumerable.Range(1, 9).Where(num => num % 3 == 0);

        foreach (int num in squares)
        {
            System.Console.Write(num + ", ");
        }
        System.Console.WriteLine();
    }
}
Z:\>csc CS0202.cs -nologo

Z:\>CS0202
3, 6, 9,

Java

C++

Objective-C

D

Go

Scala

対話型実行環境を起動

Z:\>scala
Welcome to Scala version 2.10.2 (Java HotSpot(TM) Client VM, Java 1.7.0_21).
Type in expressions to have them evaluated.
Type :help for more information.

10未満の3の倍数

(1 to 9).filter(n => n % 3 == 0)
scala> (1 to 9).filter(n => n % 3 == 0)
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(3, 6, 9)

終了

scala> :quit

F#

対話型実行環境を起動

Z:\>fsi
Microsoft (R) F# 2.0 Interactive build 4.0.40219.1
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

10未満の3の倍数

[1..9]
|> List.filter (fun x -> x % 3 = 0)
> [1..9]
- |> List.filter (fun x -> x % 3 = 0)
- ;;
val it : int list = [3; 6; 9]

終了

> #quit;;

Clojure

対話型実行環境を起動

Z:\>java -cp C:\ProgramFiles\clojure-1.5.1\clojure-1.5.1.jar clojure.main
Clojure 1.5.1

10未満の3の倍数

(filter #(= (mod  % 3) 0)
    (range 1 10))
user=> (filter #(= (mod  % 3) 0)
    (range 1 10))
(3 6 9)
(filter #(= (rem  % 3) 0)
    (range 1 10))
user=> (filter #(= (rem  % 3) 0)
    (range 1 10))
(3 6 9)

終了

user=> (. System exit 0)

Haskell

対話型実行環境を起動

Z:\>ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.

10未満の3の倍数

filter (\x -> mod x 3 == 0) [1..9]
Prelude> filter (\x -> mod x 3 == 0) [1..9]
[3,6,9]

終了

Prelude> :quit
Leaving GHCi.
inserted by FC2 system