1. 程式人生 > >用Haskell寫出高效的List

用Haskell寫出高效的List

再次閱讀haskell體會

from

	  
newtype DiffList a = DiffList{ getDiffList :: [a] -> [a] }


toDiffList :: [a] -> DiffList a
toDiffList xs = DiffList (xs++)

fromDifList :: DiffList a -> [a]
fromDifList (DiffList f) = f [] 


instance Monoid (DiffList a) where
	mempty = DiffList (\xs -> [] ++ xs)
	(DiffList f) `mappend` (DiffList g) =  DiffList (\xs -> f (g xs))
	
	
	
finalCountDown :: Int -> Writer (DiffList String) ()
finalCountDown 0 = do
	tell (toDiffList ["0"])
finalCountDown x = do
	finalCountDown (x - 1)
	tell (toDiffList [show x])
	
	


相關推薦

Haskell高效List

再次閱讀haskell體會 from newtype DiffList a = DiffList{ getDiffList :: [a] -> [a] } toDiffList :

[PAT][Python](讀入一個正整數 n,計算其各位數字之和,漢語拼音和的每一位數字。)

讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。 輸入格式:每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10^100​​ 。 輸出格式: 在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後一個拼音數字後沒有空

Windows sublime text3 + Python 學習之環境外掛配置 讓你sublime最完美的python程式碼--windows環境

工欲善其事,必先利其器!!! 興趣所在以及工作需要,想系統的學一下Python。那麼首先需要找到一個自己喜歡的編譯器,不用多說大家也知道Vim是最漂亮的編譯器,但是由於用vim相當於還要學一門vim語言,現階段來說還是先放一放,不然我都不敢說自己到底是學的vim哪還是Python。。。 Pycharm其實

驚!女朋友Python幾行程式碼就監控了我的電腦,吃雞被發現了

    今天帶給大家一個非常有意思的 python 程式,基於 itchat 實現微信控制電腦。你可以通過在微信傳送命令,來拍攝當前電腦的使用者,然後圖片會發送到你的微信上。甚至你可以傳送命令來遠端關閉電腦。 學習Python中有不明白推薦加入交流裙  

教你如何高效整潔的 css 程式碼——css優化

css 寫起來並不難,但在大型專案中,就變得難以管理,特別是不同的人在 css 書寫風格上稍有不同,團隊上就更加難以溝通,為此總結了一些如何實現高效整潔的 css 程式碼原則。css 優化的原則1、不影響頁面的佈局2、去掉不必要的樣式3、合併相同的樣式4、儘可能縮小樣式的大小

如何高效的SQL語句(從建表到查詢一步一步往後說)

建表時可以得出以下優化建議 1、 資料型別儘量用數字型,數字型比字元型的快 2、 選擇正確的表引擎 MyISAM 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好。甚至你只是需要update一個欄位,整個表都會被鎖起來,而別的程序,就算是讀程序都無法操作直到讀操

堅持堅持!Java刪除一個連結串列的倒數第N個節點,並返回頭節點(N總是可達的)

這個題目有個前提條件就是N總是可達的,所以直接省去了一種情況(N不可達時的情況) 思路: 資料結構裡面首先給定兩個指標p和q分別都指向這個連結串列的頭節點,然後若想求出這個連結串列的倒數第N個節點,方法就是先讓p向後挪N個位置,q不動。 因為N總是可達的,所以會有倆種情況,

人人都能PythonLSTM-RNN的程式碼![你的神經網路學習最佳起步]

0. 前言 本文翻譯自部落格: iamtrask.github.io ,這次翻譯已經獲得trask本人的同意與支援,在此特別感謝trask。本文屬於作者一邊學習一邊翻譯的作品,所以在用詞、理論方面難免會出現很多錯誤,假如您發現錯誤或者不合適的地方,可以給我留言,謝謝! -

如何高效C++(模板與泛型程式設計)

對Effective C++讀了以後的總結(暑假沒事幹。。就是看書,從後往前的總結) 41。瞭解隱式介面和編譯器多型 隱式介面:由一組有效表示式構成,表示式要求了相應的約束條件。 顯式介面:則是在原始碼中明確可見的指出介面的約束條件(比如函式引數的型別)。 所謂的編譯期多

HTML能轉換成合適的PDF檔案(A4紙張大小)的相關問題和方法

1 PDF檔案對應的HTML頁面的寬度為【820px】。 2 一頁PDF檔案對應的HTML頁面的高度為【1160px】,多頁類推。 3 記得要將【body】元素的外邊距【margin】清零。 如:

人人都能PythonLSTM-RNN的程式碼!

0. 前言 本文翻譯自部落格: iamtrask.github.io ,這次翻譯已經獲得trask本人的同意與支援,在此特別感謝trask。本文屬於作者一邊學習一邊翻譯的作品,所以在用詞、理論方面難免會出現很多錯誤,假如您發現錯誤或者不合適的地方,可以給我留言,謝謝! 1. 概要 我的最佳學習法就是通過玩

PythonLSTM-RNN的程式碼!

0. 前言 本文翻譯自部落格: iamtrask.github.io ,這次翻譯已經獲得trask本人的同意與支援,在此特別感謝trask。本文屬於作者一邊學習一邊翻譯的作品,所以在用詞、理論方面難免會出現很多錯誤,假如您發現錯誤或者不合適的地方,可以給我留言,謝謝!

如何高效可維護並且規範的js程式碼

設計原則: 1.原子思想:即每個function就做一件事; 2.歸納思想:將同一類的操作,全部整合到一起; 3.方便維護:可以便於後來人進行快速維護; 4.方便拓展:即可以根據每個不同的專案進行不同的更改; 5.通用前端設計模式:一些前端可以通用的設計模式 6.

520表白節 程式碼你對女神的愛

5月20日是情人節,也是所謂的“告白日”,在5月20日的13時14分對喜歡的物件傳送告白簡訊,有“我愛你一生一世”的意思。戀愛中的或已婚人士,也會向對方訴說“5201314”(我愛你一生一世)的情意。 “520告白日”是華人網路上第一個固定節日,是由“我愛你”的諧音而來,目的

如何高效C++(實現)

26.儘可能延後變數定義式的出現時間 你不止應該延後變數的定義,直到非得使用該變數的前一刻為止,甚至應該嘗試延後這份定義直到能夠給它初值實參位置,好處是不僅能夠避免構造(和析構)非必要物件,還可以避免無意義的default構造行為。 對於迴圈而言有如下兩個計劃 A:定義變數

C語言解決讀入一個自然數n,計算其各位數字之和,漢語拼音和的每一位數字。

/* 讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。 輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。 輸出格式:在一行內輸出n的各位數字之

PHP客戶端IP和伺服器端IP

客戶端的ip變數: $_SERVER['REMOTE_ADDR'] :客戶端IP,也有可能是代理IP $_SERVER['HTTP_CLIENT_IP']:代理端的IP,可能存在,也可能偽造 $_SERVER['HTTP_X_FORWARD_FOR'] :

1002. 這個數 讀入一個自然數n,計算其各位數,漢語拼音漢語拼音和的每一位數字。

// 1002.cpp: 定義控制檯應用程式的入口點。//#include "stdafx.h"#include <iostream>#include<string>using namespace std;int main(){    string a

【PAT】【C++】讀入一個自然數n,計算其各位數字之和,漢語拼音和的每一位數字。

讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。 輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。 輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後一個拼音數字後沒有空格。 輸

shell或者python各種圖形

用shell或者python寫出各種圖形首先是shell等邊三角形[[email protected]/* */ my_script]# sh ff.sh num:6 * *** ***** ******* ********* *********** [[email&