Схема имеет очень маленькую стандартную библиотеку, которая является и благословением (вы можете сделать небольшие реализации схемы для встраивания в приложение или устройство, вы можете быстро выучить язык) и проклятием (в нем отсутствует много полезных функций),string-search-forward
- это нестандартная функция схемы MIT, ее нет в DrScheme.
Многие библиотечные дополнения доступны в виде SRFIs .SRFI - это принятое сообществом расширение базового языка - его можно рассматривать как дополнительную часть реализации Схемы.DrScheme (или, по крайней мере, его преемник Racket) реализует множество SRFI .
DrScheme имеет ряд строковых функций как часть SRFI 13 .Среди функций поиска строки есть string-contains
, что аналогично, за исключением того, что она принимает аргументы в обратном порядке.
(require srfi/13)
(define (case-one str)
(integer? (string-contains str "me")))
Вы будетеобратите внимание, что в двух реализациях использовался другой порядок аргументов (что указывает на то, что они были разработаны независимо), но при этом используется одно и то же возвращаемое значение.Это показывает, что в Scheme вполне естественно иметь функцию, возвращающую разные типы в зависимости от того, что она передает.В частности, довольно распространено, чтобы функция возвращала полезную информацию, если она может выполнять свою работу, или #f
, если она не может выполнять свою работу.Таким образом, функция естественным образом объединяет выполнение своей работы (здесь, возвращая индекс подстроки) с проверкой, выполнимо ли задание (здесь, проверяя, происходит ли подстрока).