標籤:

haskell 能像python """ """ 那樣聲明字元串嗎?

我想弄個這個東西:

python可以這樣做:

"""

HHHHHHHHHHH

H

HHHHHHHHHHH

EEEEEEEEEEE

E E E

E E E

LLLLLLLLLLLLLL

L

L

"""

haskell 有類似的方式嗎?

感覺寫
和空格好煩躁啊.


raw-strings-qq庫支持多行,引號,,等等。


這個得上Template Haskell

-- Main.hs
{-# LANGUAGE QuasiQuotes #-}
module Main where
import Str

longString = [str|This is a multiline string.
Its many lines long.

It contains embedded newlines. And Unicode:

?ν ?ρχ? ?ν ? Λ?γο?

It ends here: |]

main = putStrLn longString

-- Str.hs
module Str(str) where

import Language.Haskell.TH
import Language.Haskell.TH.Quote

str = QuasiQuoter { quoteExp = stringE }

via Template Haskell 101


這樣?

file = [q|
the first line
the second line
the third line|]

How can I write a multiline strings in haskell


用TH的話可以用一些高級的多的特性,還可以寫在外部文件讓編譯器編譯的時候去讀然後靜態編譯進去,還可以做點手腳再編譯進去,比Python不知道高到哪裡去了


let str = "line 1
line 2
line 3"


ghc表示只要語法擴展夠多,要什麼特性不是問題。


推薦閱讀:

EDSL相關雜記(2)
Haskell 怎麼推導函數類型呢?
截至2016年,中文圈內有沒有非常好的函數式編程語言講義?
為什麼函數式語言中all odd [] 得到True?
有沒有比較實用、成熟的 Haskell 應用?

TAG:Haskell |