Fuzion Logo
fuzion-lang.dev — The Fuzion Language Portal
»

file

io.file

:
Any
 is
[Contains abstract features]
file -- a unit type that contains effects related to file I/O

Constructors

(dop io.this.file.this.Delete_Handler, _ unit)
:
effect
 is
[Contains abstract features]
delete -- effect wrapping the file delete operation
 ref
:
Any
 is
[Contains abstract features]
[Private constructor]
reference to the delete operations that could take place
:
mutate
 is
[Contains abstract features]
[Private constructor]
the mutate effect that is used
for reading/writing to file
:
Buffer u8, io.this.file.this.mapped_buffer.this,mutate
 is
[Contains abstract features]
[Private constructor]
mapped buffer gives access to the memory region a file is mapped
to via `mmap`.
:
Any
 is
[Contains abstract features]
[Private constructor]
meta_data will be a feature storing the metadata of file/dir
:
Any
 is
[Contains abstract features]
the mode to use when opening a file
(mop io.this.file.this.Move_Handler)
:
effect
 is
[Contains abstract features]
move -- effect wrapping the file move operation
 ref
:
Any
 is
[Contains abstract features]
[Private constructor]
reference to the move operations that could take place
:
effect
 is
[Contains abstract features]
[Private constructor]
effect for manipulating open files
(ps io.this.file.this.Seek_Handler)
:
effect
 is
[Contains abstract features]
seek -- effect providing stream seeking operations
 ref
:
Any
 is
[Contains abstract features]
reference to the seek operations that could be provided
(ps io.this.file.this.Stat_Handler)
:
effect
 is
[Contains abstract features]
stat -- effect providing operations to retrieve file stats
 ref
:
Any
 is
[Contains abstract features]
[Private constructor]
reference to the stats that could be provided

Functions

 => 
String
[Inherited from  Any]
[Contains abstract features]
create a String from this instance. Unless redefined, `a.as_string` will
create `"instance[T]"` where `T` is the dynamic type of `a`
(path String)
 => 
outcome unit
[Contains abstract features]
short-hand for accessing delete effect in current environment and performing the default delete operation using io.file.delete.delete path
deletes the file/dir found in the path
returns unit as outcome in case of successful deletion and error in case of failure
if the targeted dir has content, then the return value will be error and the deletion will not take place
 => 
Type
[Inherited from  Any]
[Contains abstract features]
Get the dynamic type of this instance. For value instances `x`, this is
equal to `type_of x`, but for `x` with a `ref` type `x.dynamic_type` gives
the actual runtime type, while `type_of x` results in the static
compile-time type.

There is no dynamic type of a type instance since this would result in an
endless hierarchy of types. So for Type values, dynamic_type is redefined
to just return Type.type.
(path String)
 => 
bool
[Contains abstract features]
Does a file or directory at path exist?
(old_path String, new_path String)
 => 
outcome unit
[Contains abstract features]
short-hand for accessing move effect in current environment and performing the default move operation using
io.file.move.move old_path new_path
moves file/dir from an old path to a the new path
can rename the file/dir as well by changing the name of the old file/dir to a new name in the new_path
returns a unit type as outcome in case of success and error in case of failure
 => 
io.this.file.this.open
[Contains abstract features]
short hand to get the currently
installed open effect
 => 
String
[Inherited from  Any]
[Contains abstract features]
convenience prefix operator to create a string from a value.

This permits usage of `$` as a prefix operator in a similar way both
inside and outside of constant strings: $x and "$x" will produce the
same string.
short hand to get the reader instance
for the opened file of type file.this
 => 
io.this.file.this.stat
[Contains abstract features]
short-hand for accessing the stat effect in current environment
(path String, resolve bool)
 => 
outcome io.this.file.this.meta_data
[Contains abstract features]
short-hand for accessing and using stats/lstats provided by the stat effect in current environment
in success it will return a meta_data outcome storing stats regarding the file/dir
in case of failure an error will be returned
resolve flag is used to indicate whether to resolve sym links or not
NYI: lstats behaves the same as stats in the interpreter
(R 
type
, file_name String, m io.this.file.this.mode.val, code Function (outcome R))
 => 
outcome R
[Contains abstract features]
this opens a file with the given mode.
on success it instates effects:

file.this.open,
(io.buffered file.this.file_mutate).reader and
(io.buffered file.this.file_mutate).writer.

These can then be used in `code()`.

usage example:

my_file : io.file is
_ := my_file.use file_name mode.read ()->
say (io.buffered my_file.file_mutate).read_lines
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
(f String, s String)
 => 
outcome unit
[Contains abstract features]
write String `s` to file `f`
short hand to get the writer instance
for the opened file of type file.this

Type Functions

 => 
String
[Inherited from  Type]
[Contains abstract features]
string representation of this type to be used for debugging.

result has the form "Type of '<name>'", but this might change in the future

redefines:

 => 
Type
[Inherited from  Type]
[Contains abstract features]
There is no dynamic type of a type instance since this would result in an
endless hierarchy of types, so dynamic_type is redefined to just return
Type.type here.

redefines:

(T 
type
)
 => 
bool
[Inherited from  Type]
[Contains abstract features]
Is this type assignable to a type parameter with constraint `T`?

The result of this is a compile-time constant that can be used to specialize
code for a particular type.

is_of_integer_type(n T : numeric) => T : integer
say (is_of_integer_type 1234) # true
say (is_of_integer_type 3.14) # false

it is most useful in conjunction preconditions or `if` statements as in

pair(a,b T) is
same
pre T : property.equatable
=>
a = b

or

val(n T) is

# check if T is numeric, if so
# return true if n > zero,
# return nil if T is not numeric
#
more_than_zero option bool =>
if T : numeric then
n > T.zero
else
nil
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 => 
String
[Inherited from  Type]
[Contains abstract features]
name of this type, including type parameters, e.g. 'option (list i32)'.
 => 
String
[Inherited from  Type]
[Contains abstract features]
convenience prefix operator to create a string from a value.

This permits usage of `$` as a prefix operator in a similar way both
inside and outside of constant strings: $x and "$x" will produce the
same string.

NYI: Redefinition allows the type feature to be distinguished from its normal counterpart, see #3913

redefines:

 => 
Type
[Inherited from  Any]
[Contains abstract features]
Get a type as a value.

This is a feature with the effect equivalent to Fuzion's `expr.type` call tail.
It is recommended to use `expr.type` and not `expr.type_value`.

`type_value` is here to show how this can be implemented and to illustrate the
difference to `dynamic_type`.
0.094dev (2025-06-18 15:08:51 GIT hash 89cffc23ae669b0898a5564fefbf793fcb8e5ca7 built by fridi@fzen)