// File I/O example - demonstrates the File effect // // This script reads a file, counts lines/words, and writes a report fn countLines(content: String): Int = { let lines = String.split(content, "\n") List.length(lines) } fn countWords(content: String): Int = { let words = String.split(content, " ") List.length(List.filter(words, fn(w: String): Bool => String.length(w) > 0)) } fn analyzeFile(path: String): Unit with {File, Console} = { Console.print("Analyzing file: " + path) if File.exists(path) then { let content = File.read(path) let lines = countLines(content) let words = countWords(content) let chars = String.length(content) Console.print(" Lines: " + toString(lines)) Console.print(" Words: " + toString(words)) Console.print(" Chars: " + toString(chars)) } else { Console.print(" Error: File not found!") } } fn main(): Unit with {File, Console} = { Console.print("=== Lux File Analyzer ===") Console.print("") // Analyze this file itself analyzeFile("examples/file_io.lux") Console.print("") // Analyze hello.lux analyzeFile("examples/hello.lux") Console.print("") // Write a report let report = "File analysis complete.\nAnalyzed 2 files." File.write("/tmp/lux_report.txt", report) Console.print("Report written to /tmp/lux_report.txt") } let result = run main() with {}