A leading slash is enough to distinguish a simple absolute path from a relative one.

Classify a path

path
absolute_paths.swift
Replay: real traced execution (multi-file project)
let path = "/tmp/cache"
let isAbsolute = path.hasPrefix("/")
let kind = isAbsolute ? "absolute" : "relative"
let message = "\(path) is \(kind)"

print(message)
let path = "notes/readme.md"
let isAbsolute = path.hasPrefix("/")
let kind = isAbsolute ? "absolute" : "relative"
let message = "\(path) is \(kind)"

print(message)
let path = "/var/log/app.log"
let isAbsolute = path.hasPrefix("/")
let kind = isAbsolute ? "absolute" : "relative"
let message = "\(path) is \(kind)"

print(message)
  1. path ← /tmp/cache, isAbsolute ← true, kind ← absolute, message ← /tmp/cache is absolute

    1let path→ /tmp/cache = "/tmp/cache"  //@path="notes/readme.md", "/var/log/app.log"2let isAbsolute→ true = path/tmp/cache.hasPrefix("/")3let kind→ absolute = isAbsolutetrue ? "absolute" : "relative"4let message→ /tmp/cache is absolute = "\(path/tmp/cache) is \(kindabsolute)"56print(message/tmp/cache is absolute)
    output/tmp/cache is absolute
  1. path ← notes/readme.md, isAbsolute ← false, kind ← relative, message ← notes/readme.md is relative

    1let path→ notes/readme.md = "notes/readme.md"2let isAbsolute→ false = pathnotes/readme.md.hasPrefix("/")3let kind→ relative = isAbsolutefalse ? "absolute" : "relative"4let message→ notes/readme.md is relative = "\(pathnotes/readme.md) is \(kindrelative)"56print(messagenotes/readme.md is relative)
    outputnotes/readme.md is relative
  1. path ← /var/log/app.log, isAbsolute ← true, kind ← absolute, message ← /var/log/app.log is absolute

    1let path→ /var/log/app.log = "/var/log/app.log"2let isAbsolute→ true = path/var/log/app.log.hasPrefix("/")3let kind→ absolute = isAbsolutetrue ? "absolute" : "relative"4let message→ /var/log/app.log is absolute = "\(path/var/log/app.log) is \(kindabsolute)"56print(message/var/log/app.log is absolute)
    output/var/log/app.log is absolute
absolute path `hasPrefix("/")` is a small predicate that can drive a path classification.