About this site

Posted on June 23, 2024 by Yu Cong
Tags: ,

1 CSS

The theme of this site is modified from https://mattwetmore.me/.

https://github.com/congyu711/Hakyllsite/tree/main/css

2 Math and Bibliography

Bib: https://github.com/chaoxu/chaoxu.github.io/blob/develop/ChaoDoc.hs

: https://github.com/chaoxu/katex_cli

3 Known issues

  • font hack is not perfect, e.g. ($G'$) – I use LibertinusMath font now.
  • currently doesn’t support anything(math, markdown …) in titles, (since I’m using filters only on withItemBody)
  • my code highlighting is in a mess. https://tony-zorman.com/posts.html has a good tutorial. some random example:
putTodo :: (Int, String) -> IO ()
putTodo (n, todo) = putStrLn (show n ++ ": " ++ todo)

prompt :: [String] -> IO ()
prompt todos = do
    putStrLn ""
    putStrLn "Current TODO list:"
    mapM_ putTodo (zip [0..] todos)
    command <- getLine
    interpret command todos

interpret :: String -> [String] -> IO ()
interpret ('+':' ':todo) todos = prompt (todo:todos)
interpret ('-':' ':num ) todos =
    case delete (read num) todos of
        Nothing -> do
            putStrLn "No TODO entry matches the given number"
            prompt todos
        Just todos' -> prompt todos'
interpret  "q"           todos = return ()
interpret  command       todos = do
    putStrLn ("Invalid command: `" ++ command ++ "`")
    prompt todos

delete :: Int -> [a] -> Maybe [a]
delete 0 (_:as) = Just as
delete n (a:as) = do
    as' <- delete (n - 1) as
    return (a:as')
delete _  []    = Nothing

main = do
    putStrLn "Commands:"
    putStrLn "+ <String> - Add a TODO entry"
    putStrLn "- <Int>    - Delete the numbered entry"
    putStrLn "q          - Quit"
    prompt []