diff --git a/Data/List/Tools.hs b/Data/List/Tools.hs
--- a/Data/List/Tools.hs
+++ b/Data/List/Tools.hs
@@ -4,6 +4,9 @@
 , mulLists
 , defaultElem
 , isIncludedElem
+
+, setAt
+, modifyAt
 ) where
 
 takeUntil :: (a -> Bool) -> [a] -> [a]
@@ -27,3 +30,9 @@
 
 isIncludedElem :: Eq a => [a] -> [a] -> Bool
 isIncludedElem lst1 lst2 = and $ map (flip elem lst2) lst1
+
+setAt :: [a] -> Int -> a -> [a]
+setAt xs i x = take i xs ++ [x] ++ drop (i + 1) xs
+
+modifyAt :: [a] -> Int -> (a -> a) -> [a]
+modifyAt xs i f = take i xs ++ [f $ xs !! i] ++ drop (i + 1) xs
diff --git a/yjtools.cabal b/yjtools.cabal
--- a/yjtools.cabal
+++ b/yjtools.cabal
@@ -1,5 +1,5 @@
 Name:		yjtools
-Version:	0.9.11
+Version:	0.9.12
 Cabal-Version:	>= 1.2
 Build-Type:	Simple
 License:	LGPL
