import Number
import Control.Monad
lim = 10000
concatPrime 1 = map return .takeWhile(<lim) $ primes
concatPrime (n+1)=do
ps <- concatPrime n
q<-takeWhile(<lim).dropWhile(<=(last ps))$primes
guard.all (isPrime.read) $map (show q++) (map show ps) ++map (++show q) (map show ps)
return$q:ps
main = print.sum.head.concatPrime$5

探索範囲をサボっているし、最小性のチェックを行っていないが、まあ、あっているでしょう・。