Advertisement
Guest User

weird closure error

a guest
Jul 23rd, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (import '[java.io File])
  2. (import '[javax.swing JFrame JButton SwingUtilities])
  3. (import '[java.awt FlowLayout])
  4. (import '[java.awt.event ActionListener])
  5.  
  6. (defn button [text listener]
  7.   "Helper: makes a button with a text and an action listener"
  8.   (doto (JButton. text)
  9.     (.addActionListener listener)))
  10.  
  11. (defn listener [f]
  12.   "Helper: turn a function (event) into a Proxy for ActionListener"
  13.   (proxy [ActionListener] []
  14.     (actionPerformed [e] (f e))))
  15.  
  16. (defn filenames [dir]
  17.   "List filenames from a director :: string -> [string]"
  18.   (->> dir File. .listFiles (map #(.getName %))))
  19.  
  20. (defn -main []
  21.   "Makes a Frame with one button per file in /tmp"
  22.   (let [frame (doto (JFrame. "opengl")
  23.                 (.setLayout (FlowLayout.))
  24.                 (.setSize 300 300)
  25.                 (.setVisible true))]
  26.     (doseq [fn (filenames "/tmp")]
  27.       (let [printer (fn [e] (println fn e))] ;; Syntax error compiling at (REPL:8:21). Unable to resolve symbol: x in this context
  28.         (.add frame (button fn (listener printer)))))))
  29.  
  30. (defn main []
  31.   (SwingUtilities/invokeLater -main))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement