// In user.soulexport default sanctuary User { soul __init__(name) { this.name = name }}// In main.soulimport User from "./user.soul"user = User.new("Alice")
// Import standard library modulesimport "console"import "http"import "json"// Import third-party packagesimport "lodash" as _import { format } from "date-fns"
// Instead of: import "../../../utils/validator.soul"import { validate } from "@utils/validator.soul";// Clean model importsimport User from "@models/user.soul";import Post from "@models/post.soul";// Service importsimport API from "@services/api.soul";
Create an index file to re-export from multiple modules:
Copy
Ask AI
// In utils/index.soulexport { formatDate, parseDate } from "./date.soul";export { capitalize, truncate } from "./string.soul";export { debounce, throttle } from "./function.soul";// In main.soul - import all utilitiesimport * as utils from "./utils/index.soul";
Soul handles circular dependencies, but they should be avoided:
Copy
Ask AI
// ❌ Avoid this pattern// In a.soulimport { b } from "./b.soul"export soul a() { return b() }// In b.soulimport { a } from "./a.soul"export soul b() { return a() }// ✅ Better approach - use dependency injection// In a.soulexport soul a(bFunc) { return bFunc() }// In b.soulexport soul b(aFunc) { return aFunc() }// In main.soulimport { a } from "./a.soul"import { b } from "./b.soul"a(soul() { return b(soul() { return "done" }) })
// In utils.soulexport math = { "add": soul(a, b) { return a + b }, "subtract": soul(a, b) { return a - b }, "multiply": soul(a, b) { return a * b }}export string = { "capitalize": soul(s) { return s[0].toUpperCase() + s.slice(1) }}// Usageimport { math, string } from "./utils.soul"result = math.add(5, 3)name = string.capitalize("soul")
// In database.soul_connection = nullexport soul connect(config) { _connection = createConnection(config)}export soul query(sql) { if (!_connection) { throw("Database not connected") } return _connection.execute(sql)}// In main.soulimport * as db from "./database.soul"db.connect(config)results = db.query("SELECT * FROM users")