מציאת אורך מחרוזת

Haskell:
מציאת אורך מחרוזת

איך לעשות:

main :: IO ()
main = do
    let myString = "שלום עולם"
    print $ length myString

פלט דוגמא:

10

מערכת הספירה כוללת גם רווחים ותווי בקרה, ולא רק אותיות וספרות.

עיון מעמיק

אורך המחרוזת, בימים של שפות תכנות מודרניות כמו Haskell, הוא פשוט למדי. אבל בשפות ישנות יותר או בסביבות נמוכות יותר, כמו C, זה היה יכול לדרוש סריקה לאורך כל המחרוזת כדי למצוא את סוף המחרוזת (נקודת העצירה הייתה התו ‘\0’). ב-Haskell, length היא פונקציה סטנדרטית בספריה Prelude שמחזירה את אורך כל רשימה, כולל מחרוזת שהיא רשימת תווים. פרטי מימוש - length מבצעת ספירה רקורסיבית של התווים במחרוזת. החסרון הוא שלפעולה יש סיבוכיות ליניארית - O(n).

בנוסף לפונקציית length, יש גם פונקציות אחרות שיכולות למדוד גדלים של נתחים מहמחרוזת או לבצע פעולות יעילות יותר עם סטרקטורות נתונים אחרות, כמו סידרה בתוך ספריה Data.Sequence, שיכולים לתת גישה לאורך בזמן קבוע – O(1).

ראה גם