計算機科学のブログ

コードの整理とプロジェクトのビルド QuickCheckを使ったプロパティテスト 新しいプロジェクトを開始する

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT6(コードの整理とプロジェクトのビルド)、LESSON 36(QuickCheckを使ったプロパティテスト)、36.1(新しいプロジェクトを開始する)、クイックチェック 36-1の解答を求めてみる。

コード

palindrome-testing/app/Main.hs

module Main (main) where

import Lib

main :: IO ()
main = putStrLn "Hello World!"

palindrome-testing/src/Lib.hs

module Lib where

-- 全てエクスポート

isPalindrome :: String -> Bool
isPalindrome text = text == reverse text

入出力結果(Terminal, Zsh)

% stack build
palindrome-testing-0.1.0.0: unregistering (local file changes: src/Lib.hs)
palindrome-testing> build (lib + exe)
Preprocessing library for palindrome-testing-0.1.0.0..
Building library for palindrome-testing-0.1.0.0..
[2 of 2] Compiling Lib

/Users/…/palindrome-testing/src/Lib.hs:1:1: warning: [-Wmissing-export-lists]
    The export item ‘module Lib’ is missing an export list
  |
1 | module Lib where
  | ^
ld: warning: -undefined dynamic_lookup may not work with chained fixups
Preprocessing executable 'palindrome-testing-exe' for palindrome-testing-0.1.0.0..
Building executable 'palindrome-testing-exe' for palindrome-testing-0.1.0.0..
palindrome-testing> copy/register
Installing library in /Users/…/palindrome-testing/.stack-work/install/x86_64-osx/dd0ba1c274e73dc536fbe6c0a59722f85fb3bc32a983d13f60410ac8cb68772f/9.0.2/lib/x86_64-osx-ghc-9.0.2/palindrome-testing-0.1.0.0-5TG33YXoyUc9xySoWsuis4
Installing executable palindrome-testing-exe in /Users/…/palindrome-testing/.stack-work/install/x86_64-osx/dd0ba1c274e73dc536fbe6c0a59722f85fb3bc32a983d13f60410ac8cb68772f/9.0.2/bin
Registering library for palindrome-testing-0.1.0.0..
% stack exec palindrome-testing-exe
Hello World!
%