相关疑难解决方法(0)

TemplateHaskell和IO

如果使用副作用,有没有正确的方法使TH的功能安全?说,我想要一个在编译时调用git并生成版本字符串的函数:

{-# LANGUAGE TemplateHaskell #-}

module Qq where

import System.Process
import Language.Haskell.TH

version =  $( [| (readProcess "git" ["rev-parse", "HEAD"] "")  |] )
Run Code Online (Sandbox Code Playgroud)

版本的类型是IO String.但是版本在运行时完全没有副作用,它只在编译时有副作用.有没有办法在不使用unsafePerformIO的情况下在运行时使其纯粹?

haskell template-haskell

6
推荐指数
1
解决办法
892
查看次数

标签 统计

haskell ×1

template-haskell ×1