ビールから意識を遠ざけるための暇つぶし

Tech > Haskell

酒飲めずあまりに暇だったのでつまらない時間つぶし、ファイルかディレクトリか判断するだけのコード

import os

def main():
    r = []
    fs = os.listdir(".")
    for f in fs:
        r.append(os.path.isdir(f))
    return r

if __name__ == '__main__':
    r = main()
    print(r)

Pythonはカレントディレクトリ 「.」 と 親ディレクトリ 「..」 は親切に返してこない、これはいい

これほぼ同じコードをhaskellで書いてみた

import System.Directory
import System.Posix
import Control.Monad

main :: IO ()
main = do
  r <- return . map isDirectory =<< mapM getFileStatus =<< getDirectoryContents "."
  putStrLn $ show r

getFileStatusstat っぽい事してるので少し違うけど心地良い、ループがないけど最後の map でループしてて [チョメチョメ] が帰ってきて、 isDirectory の型さえ調べればもはや [Bool] これとすぐ分かる。 一番右の getDirectoryContents “.” と一番左の map isDirectory だけで真ん中はそんなに重要でなくなる。

そして、これをphpで書いてみた

<?php

$r = main();
var_dump($r);

function main() {
   $d = opendir('.');
   $res = array();

    while (($file = readdir($d)) !== false) {
        if (is_dir($file)) {
            array_push($res, true);
        } else {
            array_push($res, false);
        }
    }
    closedir($d);
    return $res;
}

久しぶりにphp書いたけど、結構エラーで叱られる、たまには違う言語も書かないとだめですね。

ちなみにphpはワンライナーでもやれる

<?php $r = main();var_dump($r);function main() {$d = opendir('.');$res = array();while (($file = readdir($d)) !== false) {if (is_dir($file)) {array_push($res, true);} else {array_push($res, false);}}closedir($d);return $res;}

phpつおい、ちなみに私は、 ZendFramework派 です。

Posted on 2021-09-11 17:10:36

はじめまして

静岡の極東の浜辺で何かをやっている人間です、基本的に季節を問わずBBQとオフロードをバイクで走るのがが大好きです、暇があれば何かを焼いているか走っています。どこかの浜で焼いている姿をみたら、gentooの話もで飲みながらしましょう...

Posted

Amazon

tags

日本酒池 広井酒店 やがら やっぱた 刺身 丸干し 東京マラソン fpm php82 servant thread spawn Rust Oracle Linux 8 microcode firmware linux openzfs zfs gitea 麒麟 真野鶴 金鶴 日本酒 docker oracle pod podman cli virtualbox VirtualBox epub mobi calibre mask lens ワンライナー php redmine Linux Oracle Map OMap omap map BBQ カテゴリ管理 カテゴリ timestamp date oracle database string 麦焼酎 ダービー process 磨き蒸留 広井酒店、日本酒 芋焼酎 焼酎 ゆるキャン 広井酒店、日本酒池 spring framework java persistent spring session session spring hdbc-odbc persistent-odbc odbc day utctime スィート レマンの森 elm初期化 elm バイク xlr80 esqueleto database xl2tpd strongswan vpn l2tp ipsec 正月 ゲーム grub nginx systemctl portage 豚骨 圧力鍋 yesod-auth-hashdb yesod-auth yesod