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

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

getFileStatus で stat っぽい事してるので少し違うけど心地良い、ループがないけど最後の 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