من از انواع ضبط در F # برای ذخیره برخی داده های ساده استفاده می کنم ، به عنوان مثال به شرح زیر:
open Vector
type Point =
{
x: float;
y: float;
z: float;
}
static member (+) (p: Point, v: Vector) = { Point.x = p.x + v.x ; y = p.y + v.y ; z = p.z + v.z }
static member (-) (p: Point, v: Vector) = { Point.x = p.x - v.x ; y = p.y - v.y ; z = p.z - v.z }
static member (-) (p1: Point, p2: Point) = { Vector.x = p1.x - p2.x ; y = p1.y - p2.y ; z = p1.z - p2.z }
member p.ToVector = { Vector.x = p.x ; y = p.y ; z = p.z }
من نمی توانم بررسی کنم که آیا این وجود دارد به عنوان یک مقدار یا نوع مرجع پیاده سازی شده است.
من با استفاده از سطرهای یک فایل متنی را می خوانم (line-seq ( خواننده "input.txt"))
.این مجموعه سپس توسط برنامه من مورد استفاده قرار می گیرد و مورد استفاده قرار می گیرد.
من نگران هستم که این ممکن است سبک بدی باشد ، زیرا من قاطعانه پرونده را نمی بندم. من تصور می کنم که نمی توانم از (with-open (line-seq (خواننده "input.txt")))]
استفاده کنم ، زیرا قبل از اینکه کل دنباله را مرور کنم ، جریان پرونده به طور بالقوه بسته می شود.
آیا باید از lazy-seq
در رابطه با خواننده
برای پرونده ها جلوگیری شود؟ آیا الگوی دیگری وجود دارد که من باید در اینجا استفاده کنم؟